Browse Source

Merge remote-tracking branch 'origin/master'

master
God 9 months ago
parent
commit
a98860ccd3
  1. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentSchedule.java
  2. 15
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml
  3. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.xml
  4. 721
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java
  5. 27
      yxt-as-ui/src/api/Common/dictcommons.js
  6. 52
      yxt-as-ui/src/api/client/customermanagement.js
  7. 636
      yxt-as-ui/src/components/publicPage/quickAddCustomer.vue
  8. 342
      yxt-as-ui/src/components/publicPage/selectCustomer.vue
  9. 28
      yxt-as-ui/src/views/client/customermanagement/customermanagementAdd.vue
  10. 6
      yxt-as-ui/src/views/client/customermanagement/customermanagementInfo.vue
  11. 179
      yxt-as-ui/src/views/maintenanceReceive/index.vue
  12. 3
      yxt-as-ui/src/views/maintenanceReceive/maintenanceOutbound.vue
  13. 199
      yxt-as-ui/src/views/maintenanceReceive/maintenanceReturnBound.vue
  14. 35
      yxt-as-ui/src/views/maintenanceReceive/repairbillInfo.vue
  15. 89
      yxt-as-ui/src/views/operation/preregistration/preregistrationAdd.vue
  16. 20
      yxt-as-ui/src/views/operation/preregistration/preregistrationInfo.vue
  17. 192
      yxt-as-ui/src/views/operation/preregistration/relation/customer.vue
  18. 70
      yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue
  19. 12
      yxt-as-ui/src/views/operation/repairbill/repairbillByBeCompleted.vue
  20. 21
      yxt-as-ui/src/views/operation/repairbill/repairbillInfo.vue
  21. 17
      yxt-as-ui/src/views/operation/salesticket/salesticketAdd.vue
  22. 6
      yxt-as-ui/src/views/operation/salesticket/salesticketInfo.vue
  23. 346
      yxt-as-ui/src/views/storage/stocktaking/index.vue
  24. 6
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java
  25. 3
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InsuranceVo.java
  26. 36
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairBillQuery.java
  27. 27
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairBillVo.java
  28. 3
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairInventoryBillInit.java
  29. 16
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairInventorybillListVo.java
  30. 16
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/ConfirmDto.java
  31. 3
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybilldetail/AsBusrepairInventorybillDetail.java
  32. 2
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybilldetail/AsBusrepairInventorybillDetailSDto.java
  33. 5
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusreservebill/AsBusreserveBill.java
  34. 4
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusreservebill/AsBusreserveBillDetailsVo.java
  35. 4
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusreservebill/AsBusreserveBillDto.java
  36. 19
      yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerCrmVehVo.java
  37. 42
      yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerVehicleQuery.java
  38. 185
      yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/QuickAddCustomer.java
  39. 19
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceclaimanu/ServiceClaimanuVo.java
  40. 19
      yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitem/AsBusrepairServiceItemQuery.java
  41. 2
      yxt-as/src/main/java/com/yxt/anrui/as/api/utils/FileUrlQuery.java
  42. 7
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java
  43. 75
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java
  44. 50
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordMapper.java
  45. 6
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordMapper.xml
  46. 45
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordRest.java
  47. 50
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordService.java
  48. 4
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillMapper.java
  49. 34
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillMapper.xml
  50. 14
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillRest.java
  51. 126
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillService.java
  52. 7
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusreservebill/AsBusreserveBillService.java
  53. 3
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.java
  54. 17
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.xml
  55. 22
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleRest.java
  56. 61
      yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java
  57. 8
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceclaimanu/AsServiceClaimanuMapper.java
  58. 14
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceclaimanu/AsServiceClaimanuRest.java
  59. 24
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceclaimanu/AsServiceClaimanuService.java
  60. 9
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitem/AsServiceItemRest.java
  61. 19
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitem/AsServiceItemService.java
  62. 146
      yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempDto.java
  63. 35
      yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempFeign.java
  64. 5
      yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentSchedule.java

@ -96,4 +96,6 @@ public class LoanRepaymentSchedule extends BaseEntity {
private BigDecimal importInterest;
@ApiModelProperty("导入资金占用费")
private BigDecimal importFund;
@ApiModelProperty("全路径")
private String orgSidPath;
}

15
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymenthistory/LoanRepaymentHistoryMapper.xml

@ -284,8 +284,8 @@
SELECT
pd.busVinSid,
pd.dueDate,
s.createBySid,
s.orgSidPath,
pd.createBySid,
pd.orgSidPath,
pd.sid,
pd.useOrgName,
pd.dept,
@ -314,7 +314,6 @@
END AS returnState
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN (
SELECT
p.sid,
@ -432,8 +431,8 @@
(
SELECT
pd.dueDate,
s.createBySid,
s.orgSidPath,
pd.createBySid,
pd.orgSidPath,
pd.sid,
pd.useOrgName,
pd.dept,
@ -461,7 +460,6 @@
END AS returnState
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN loan_be_padsincere_veh AS v ON v.saleVehSid = pd.busVinSid
LEFT JOIN (
SELECT
@ -674,8 +672,8 @@
SELECT
pd.busVinSid,
pd.dueDate,
s.createBySid,
s.orgSidPath,
pd.createBySid,
pd.orgSidPath,
pd.sid,
pd.useOrgName,
pd.dept,
@ -707,7 +705,6 @@
END AS returnState
FROM
loan_repayment_plan_details AS pd
LEFT JOIN anrui_buscenter.bus_sales_order AS s ON s.sid = pd.salesOrderSid
LEFT JOIN (
SELECT
p.sid,

4
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleMapper.xml

@ -6,7 +6,7 @@
vehCount,vinNo,loanContractSid,loanContractNo,bankContractNo,bankName,policyName,mainPeriod,mainRepayDate,
mainLastDate,mainFirstRepay,mainMidRepay,mainLastRepay,otherPeriod,otherBankNo,otherRepayDate,otherFirstRepay,
otherMidRepay,otherLastRepay,isOtherPolicy,sameBank,cwDeptNo,isDifferent,importTiredMoney,importPaymentMoney,
importInterest,importFund)
importInterest,importFund,orgSidPath)
values
<foreach collection="list" item="item" index="index" separator=",">
(#{item.createBySid},#{item.sid},#{item.createTime},#{item.isEnable},#{item.salesOrderSid},#{item.borrowerSid},#{item.borrowerName},
@ -14,7 +14,7 @@
#{item.policyName},#{item.mainPeriod},#{item.mainRepayDate},#{item.mainLastDate},#{item.mainFirstRepay},#{item.mainMidRepay},
#{item.mainLastRepay},#{item.otherPeriod},#{item.otherBankNo},#{item.otherRepayDate},#{item.otherFirstRepay},#{item.otherMidRepay},
#{item.otherLastRepay},#{item.isOtherPolicy},#{item.sameBank},#{item.cwDeptNo},#{item.isDifferent},#{item.importTiredMoney},
#{item.importPaymentMoney},#{item.importInterest},#{item.importFund}
#{item.importPaymentMoney},#{item.importInterest},#{item.importFund},#{item.orgSidPath}
)
</foreach>
</insert>

721
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java

@ -5257,6 +5257,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
if (sleep.equals("否")) {
LoanRepaymentSchedule scheduleDetails = new LoanRepaymentSchedule();
scheduleDetails.setCreateBySid(userSid);
scheduleDetails.setOrgSidPath(orgPath);
String scheduleSid = scheduleDetails.getSid();
scheduleDetails.setIsOtherPolicy(isOther);
scheduleDetails.setSameBank(sameBank);
@ -5577,7 +5578,6 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
System.out.println("============================");
System.out.println(schedules);
System.out.println("============================");
generateHistoryData(schedules, userSid);
} catch (Exception e) {
e.printStackTrace();
@ -5650,20 +5650,13 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
importSleepData.setPolicyOrOther("1");
}
String salesOrderSid = mainSchedule.getSalesOrderSid();
BusSalesOrder order = busSalesOrderFeign.fetchBySid(salesOrderSid).getData();
if (null != order) {
if (StringUtils.isNotBlank(order.getOrgSid())) {
importSleepData.setDeptSid(order.getOrgSid());
}
if (StringUtils.isNotBlank(order.getOrgName())) {
importSleepData.setDept(order.getOrgName());
}
if (StringUtils.isNotBlank(order.getUseOrgSid())) {
importSleepData.setUseOrgSid(order.getUseOrgSid());
}
if (StringUtils.isNotBlank(order.getOrgSidPath())) {
importSleepData.setOrgSidPath(order.getOrgSidPath());
}
String orgSidPath = mainSchedule.getOrgSidPath();
SysOrganizationVo deptData = sysOrganizationFeign.selectByOrgSidPath(orgSidPath).getData();
if (null != deptData) {
importSleepData.setDeptSid(deptData.getSid());
importSleepData.setDept(deptData.getName());
importSleepData.setUseOrgSid(deptData.getPsid());
importSleepData.setOrgSidPath(orgSidPath);
}
BusSalesOrderVehicle orderVehicle = busSalesOrderVehicleFeign.selByOrderSidAndVinNo(salesOrderSid, vinNo).getData();
if (null != orderVehicle) {
@ -6011,104 +6004,74 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
jrList.add(jr);
}
}
int M = maxInt(M1, M2); //取最大还款期数
for (int i = M; i <= M && i > 0; i--) {
BigDecimal m1i = BigDecimal.ZERO; //主产品月还
BigDecimal m2i = BigDecimal.ZERO; //其他融月还
if (i <= M1) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = m.get(i - 1);
m1i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m1i) >= 0 ? m1i : T1;
BigDecimal L1 = BigDecimal.ZERO;
int M = maxInt(M1, M2); //取最大还款期数
for (int i = M; i <= M && i > 0; i--) {
BigDecimal m1i = BigDecimal.ZERO; //主产品月还
BigDecimal m2i = BigDecimal.ZERO; //其他融月还
if (i <= M1) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = m.get(i - 1);
m1i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m1i) >= 0 ? m1i : T1;
BigDecimal L1 = BigDecimal.ZERO;
if (T1.subtract(D1).compareTo(BigDecimal.ZERO) == 0) {
L1 = TempL;
} else {
if (D1.compareTo(T) >= 0) {
L1 = L;
} else {
BigDecimal bigDecimal = D1.divide(T, 2, BigDecimal.ROUND_HALF_UP);
L1 = L.multiply(bigDecimal);
}
T1 = T1.subtract(D1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m1i) >= 0 ? m1i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
T1 = T1.subtract(D1);
TempL = TempL.subtract(L1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m1i) >= 0 ? m1i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
if (Q1.subtract(temp).compareTo(BigDecimal.ZERO) == 0) {
B1 = TempB;
} else {
if (temp.compareTo(Q) >= 0) {
B1 = B;
} else {
BigDecimal bigDecimal = temp.divide(Q, 2, BigDecimal.ROUND_HALF_UP);
B1 = B.multiply(bigDecimal);
}
if (Q1.compareTo(m1i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(m1i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
}
TempB = TempB.subtract(B1);
if (Q1.compareTo(m1i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setActualMoney(m1i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
@ -6119,104 +6082,114 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (pd) {
planDetails.add(p);
}
}
if (i <= M2) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = o.get(i - 1);
m2i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m2i) >= 0 ? m2i : T1;
BigDecimal L1 = BigDecimal.ZERO;
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (pd) {
planDetails.add(p);
}
}
if (i <= M2) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = o.get(i - 1);
m2i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m2i) >= 0 ? m2i : T1;
BigDecimal L1 = BigDecimal.ZERO;
if (T1.subtract(D1).compareTo(BigDecimal.ZERO) == 0) {
L1 = TempL;
} else {
if (D1.compareTo(T) >= 0) {
L1 = L;
} else {
BigDecimal bigDecimal = D1.divide(T, 2, BigDecimal.ROUND_HALF_UP);
L1 = L.multiply(bigDecimal);
}
T1 = T1.subtract(D1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m2i) >= 0 ? m2i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
TempL = TempL.subtract(L1);
T1 = T1.subtract(D1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m2i) >= 0 ? m2i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
if (Q1.subtract(temp).compareTo(BigDecimal.ZERO) == 0) {
B1 = TempB;
} else {
if (temp.compareTo(Q) >= 0) {
B1 = B;
} else {
BigDecimal bigDecimal = temp.divide(Q, 2, BigDecimal.ROUND_HALF_UP);
B1 = B.multiply(bigDecimal);
}
if (Q1.compareTo(m2i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(m2i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
}
TempB = TempB.subtract(B1);
if (Q1.compareTo(m2i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setActualMoney(m2i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
@ -6227,12 +6200,52 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (pd) {
planDetails.add(p);
}
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (pd) {
planDetails.add(p);
}
}
}
}
} else {
M2 = getDiffPeriod(new Date(), schedule.getOtherRepayDate());
@ -6340,104 +6353,74 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
jrList.add(jr);
}
}
int M = maxInt(M1, M2); //取最大还款期数
for (int i = M; i <= M && i > 0; i--) {
BigDecimal m1i = BigDecimal.ZERO; //主产品月还
BigDecimal m2i = BigDecimal.ZERO; //其他融月还
if (i <= M1) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = m.get(i - 1);
m1i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m1i) >= 0 ? m1i : T1;
BigDecimal L1 = BigDecimal.ZERO;
int M = maxInt(M1, M2); //取最大还款期数
for (int i = M; i <= M && i > 0; i--) {
BigDecimal m1i = BigDecimal.ZERO; //主产品月还
BigDecimal m2i = BigDecimal.ZERO; //其他融月还
if (i <= M1) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = m.get(i - 1);
m1i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m1i) >= 0 ? m1i : T1;
BigDecimal L1 = BigDecimal.ZERO;
if (T1.subtract(D1).compareTo(BigDecimal.ZERO) == 0) {
L1 = TempL;
} else {
if (D1.compareTo(T) >= 0) {
L1 = L;
} else {
BigDecimal bigDecimal = D1.divide(T, 2, BigDecimal.ROUND_HALF_UP);
L1 = L.multiply(bigDecimal);
}
T1 = T1.subtract(D1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m1i) >= 0 ? m1i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
TempL = TempL.subtract(L1);
T1 = T1.subtract(D1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m1i) >= 0 ? m1i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
if (Q1.subtract(temp).compareTo(BigDecimal.ZERO) == 0) {
B1 = TempB;
} else {
if (temp.compareTo(Q) >= 0) {
B1 = B;
} else {
BigDecimal bigDecimal = temp.divide(Q, 2, BigDecimal.ROUND_HALF_UP);
B1 = B.multiply(bigDecimal);
}
if (Q1.compareTo(m1i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(m1i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
}
TempB = TempB.subtract(B1);
if (Q1.compareTo(m1i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setActualMoney(m1i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
@ -6448,104 +6431,114 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (true) {
planDetails.add(p);
}
}
if (i <= M2) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = o.get(i - 1);
m2i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m2i) >= 0 ? m2i : T1;
BigDecimal L1 = BigDecimal.ZERO;
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (true) {
planDetails.add(p);
}
}
if (i <= M2) {
boolean pd = false;
BigDecimal temp = BigDecimal.ZERO;
BigDecimal D1 = BigDecimal.ZERO;
LoanRepaymentPlanDetails p = o.get(i - 1);
m2i = p.getDueMoney();
if (T1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//垫款金额、垫资方逾期利息
D1 = T1.compareTo(m2i) >= 0 ? m2i : T1;
BigDecimal L1 = BigDecimal.ZERO;
if (T1.subtract(D1).compareTo(BigDecimal.ZERO) == 0) {
L1 = TempL;
} else {
if (D1.compareTo(T) >= 0) {
L1 = L;
} else {
BigDecimal bigDecimal = D1.divide(T, 2, BigDecimal.ROUND_HALF_UP);
L1 = L.multiply(bigDecimal);
}
T1 = T1.subtract(D1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m2i) >= 0 ? m2i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
TempL = TempL.subtract(L1);
T1 = T1.subtract(D1);
p.setPaymentInterest(L1);
p.setOverdue(0);
p.setPaymentMoney(D1);
if (L1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(L1);
jr.setCurrentReceivableMoney(L1);
jr.setPayCostTitleKey("005");
jr.setPayCostTitleValue("资方逾期利息");
jrList.add(jr);
}
}
if (Q1.compareTo(BigDecimal.ZERO) > 0) {
pd = true;
//资金占用费
temp = Q1.compareTo(m2i) >= 0 ? m2i : Q1;
BigDecimal B1 = BigDecimal.ZERO;
if (Q1.subtract(temp).compareTo(BigDecimal.ZERO) == 0) {
B1 = TempB;
} else {
if (temp.compareTo(Q) >= 0) {
B1 = B;
} else {
BigDecimal bigDecimal = temp.divide(Q, 2, BigDecimal.ROUND_HALF_UP);
B1 = B.multiply(bigDecimal);
}
if (Q1.compareTo(m2i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(m2i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
}
TempB = TempB.subtract(B1);
if (Q1.compareTo(m2i) < 0) {
//生成 i 期还款记录,月还金额 m1i - Q1
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setActualMoney(m2i.subtract(Q1));
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
@ -6556,14 +6549,54 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (pd) {
planDetails.add(p);
}
p.setOverdue(0);
if (B1.compareTo(BigDecimal.ZERO) > 0) {
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setCreateBySid(userSid);
jr.setBusSid(p.getSid());
jr.setKxState("01");
jr.setIsEnable(3);
jr.setReveivableMoney(B1);
jr.setCurrentReceivableMoney(B1);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jrList.add(jr);
LoanFundDay fundDay = new LoanFundDay();
fundDay.setCreateBySid(userSid);
fundDay.setIsEnable(3);
fundDay.setCreateDate(returnYesterday());
fundDay.setPaymentMoney(p.getPaymentMoney());
fundDay.setFund(B1);
fundDay.setBusSid(p.getSid());
loanFundDays.add(fundDay);
}
Q1 = Q1.subtract(temp);
} else if (Q1.compareTo(BigDecimal.ZERO) == 0) {
LoanRepaymentHistory history = new LoanRepaymentHistory();
history.setCreateBySid(userSid);
history.setDataTime(new Date());
history.setUpdateState("1");
history.setUpdateTime(new Date());
history.setActualDate(p.getDueDate());
history.setActualMoney(p.getDueMoney());
history.setBuckleKey("003");
history.setBuckle("审核通过");
history.setReturnWayKey("01");
history.setReturnWay("直还");
history.setPayState(0);
history.setIsEnable(3);
history.setPlanDetailSid(p.getSid());
history.setScheduleSid(schedule.getSid());
histories.add(history);
}
if (pd) {
planDetails.add(p);
}
}
}
}
}
}
@ -6991,11 +7024,11 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
appRepaymentPlanListDetailsWxVo.setSalesName(loanRepaymentSchedule.getStaffName());
appRepaymentPlanListDetailsWxVo.setManagement(loanRepaymentSchedule.getBankName());
appRepaymentPlanListDetailsWxVo.setZcpDate(loanRepaymentSchedule.getMainPeriod() + "/" + DateUtil.formatDate(loanRepaymentSchedule.getMainRepayDate()) + "(首还)");
if ("1".equals(loanRepaymentSchedule.getIsOtherPolicy())){//有其他融
if ("1".equals(loanRepaymentSchedule.getIsOtherPolicy())) {//有其他融
appRepaymentPlanListDetailsWxVo.setPtrDate(loanRepaymentSchedule.getOtherPeriod() + "/" + DateUtil.formatDate(loanRepaymentSchedule.getOtherRepayDate()) + "(首还)");
if ("1".equals(loanRepaymentSchedule.getSameBank())){//其他融资方与主产品相同
if ("1".equals(loanRepaymentSchedule.getSameBank())) {//其他融资方与主产品相同
appRepaymentPlanListDetailsWxVo.setOtherManagement(appRepaymentPlanListDetailsWxVo.getManagement());
}else {//其他融资方与主产品不相同
} else {//其他融资方与主产品不相同
List<LoanRepaymentPlanDetails> loanRepaymentPlanDetails = loanRepaymentPlanDetailsService.selByMainSidAndPolicyOrOther(scheduleSid, "1");
appRepaymentPlanListDetailsWxVo.setOtherManagement(loanRepaymentPlanDetails.get(0).getBankName());
}
@ -7024,7 +7057,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
appRepaymentPlanThead3.setEmptyString("-");
appRepaymentPlanThead3.setAlign("center");
appRepaymentPlanTheads.add(appRepaymentPlanThead3);
if ("1".equals(loanRepaymentSchedule.getIsOtherPolicy())){
if ("1".equals(loanRepaymentSchedule.getIsOtherPolicy())) {
AppRepaymentPlanThead appRepaymentPlanThead4 = new AppRepaymentPlanThead();
appRepaymentPlanThead4.setName("otherMonthlyPaymentStr");
String[] qtrDate = DateUtil.formatDate(loanRepaymentSchedule.getOtherRepayDate()).split("-");
@ -7081,7 +7114,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
appRepaymentHistoryThead5.setAlign("center");
appRepaymentHistoryTheads.add(appRepaymentHistoryThead5);
appRepaymentHistoryListDetailsWxVo.setThead(appRepaymentHistoryTheads);
List<AppRepaymentHistoryRecord> appRepaymentHistoryRecords = loanRepaymentHistoryService.selSchSidAndVinNo(scheduleSid,vinNo);
List<AppRepaymentHistoryRecord> appRepaymentHistoryRecords = loanRepaymentHistoryService.selSchSidAndVinNo(scheduleSid, vinNo);
appRepaymentHistoryListDetailsWxVo.setRecords(appRepaymentHistoryRecords);
return appRepaymentHistoryListDetailsWxVo;
}

27
yxt-as-ui/src/api/Common/dictcommons.js

@ -35,7 +35,6 @@ export function getListOrg(data) {
})
}
// 根据当前登录人orgSidPath(全路径sid)查询分公司
export function getOrgSidByPath(data) {
return request({
@ -53,7 +52,6 @@ export function fetchBySid(sid) {
})
}
// 根据分公司Sid获取分公司下所有的部门
export function getListDeptByOrgSid(data) {
return request({
@ -139,10 +137,31 @@ export function getGroupList(data) {
})
}
// 部门sid获取索赔厂家
export function getListByUseOrgSid(data) {
return request({
url: '/as/v1/asserviceclaimanu/getListByUseOrgSid',
method: 'get',
params: data
})
}
// 部门sid获取维修项目(已备案且已启用的)
export function getServiceItemListPage(data) {
return request({
url: '/as/v1/AsServiceItem/getServiceItemListPage',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 查询分页列表 -- 客户列表
export function customerListPage(params) {
export function customerList(params) {
return request({
url: '/yxtcrm/apiadmin/v1/crmcustomer/customerListPage',
url: '/as/v1/ascustomervehicle/customerList',
method: 'post',
data: params,
headers: {

52
yxt-as-ui/src/api/client/customermanagement.js

@ -41,6 +41,24 @@ export default {
params: data
})
},
// 定点企业禁用
disableState: function(data) {
return request({
url: '/crm/v1/crmcustomerorg/disableState',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 定点企业启用
enable: function(data) {
return request({
url: '/crm/v1/crmcustomerorg/enable',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
deleteBySids: function(data) {
return request({
url: '/crm/v1/crmcustomertemp/del/',
@ -82,4 +100,38 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 对接人列表
personList: function(params) {
return request({
url: '/as/v1/ascustomerperson/personList',
method: 'get',
params: params
})
},
// 删除对接人信息
delPersonBySids: function(data) {
return request({
url: '/as/v1/ascustomerperson/delBySids',
method: 'DELETE',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
// 快捷新增客户--初始化
quickAddInit: function(params) {
return request({
url: '/as/v1/ascustomervehicle/quickAddInit',
method: 'get',
params: params
})
},
// 快捷新增客户--保存
quickAddSave: function(data) {
return request({
url: '/as/v1/ascustomervehicle/quickAddSave',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
}
}

636
yxt-as-ui/src/components/publicPage/quickAddCustomer.vue

@ -0,0 +1,636 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>客户名称</div>
<el-form-item prop="name"><el-input class="addinputInfo addinputw" v-model="formobj.name" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">客户类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerType }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>联系电话</div>
<el-form-item prop="mobile"><el-input class="addinputInfo" style="width: 30%" v-model="formobj.mobile" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">微信号</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.weixin" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户地址</div>
<el-form-item>
<div class="addinputInfo" style="display: flex;flex-direction: row;justify-content: flex-start;align-items: center">
<el-select v-model="formobj.province" filterable clearable placeholder="请选择省" style="width:160px" @change="provinceChange">
<el-option v-for="item in province_list" :key="item.sid" :label="item.name" :value="item.name"/>
</el-select>
<el-select v-model="formobj.city" filterable placeholder="请选择市" style="width:160px" @change="cityChange">
<el-option v-for="item in city_list" :key="item.sid" :label="item.name" :value="item.name"/>
</el-select>
<el-select v-model="formobj.county" filterable placeholder="请选择县" style="width:160px" @change="countyChange">
<el-option v-for="item in county_list" :key="item.sid" :label="item.name" :value="item.name"/>
</el-select>
<el-input style="width: 30%" v-model="formobj.address" clearable placeholder=""/>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">客户级别</div>
<el-form-item>
<el-select v-model="formobj.levelKey" class="addinputInfo" clearable filterable placeholder="" @change="levelChange">
<el-option v-for="item in level_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">是否开启提醒</div>
<el-form-item>
<el-radio-group class="addinputInfo" v-model="formobj.isOnRemind" @change="isOnRemindChange">
<el-radio label="是"></el-radio>
<el-radio label="否"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="formobj.isOnRemind == '是'">
<el-col :span="12">
<div class="span-sty">提醒日期</div>
<el-form-item><el-date-picker class="addinputInfo" v-model="formobj.remind_day" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">提醒备注</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.remind_remark" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<div class="title">更多信息</div>
<el-row v-if="formobj.customerType == '个人'">
<el-col :span="12">
<div class="span-sty">客户生日</div>
<el-form-item><el-date-picker class="addinputInfo" v-model="formobj.birthday" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">性别</div>
<el-form-item>
<el-radio-group class="addinputInfo" v-model="formobj.sex" @change="sexChange">
<el-radio v-for="item in sex_list" :key="item.dictKey" :label="item.dictValue">{{ item.dictValue }}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">证件类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.certificateType }}</span></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">证件号码</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.idnumber" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">证件有效期</div>
<el-form-item><el-date-picker class="addinputInfo" v-model="formobj.endDate" type="date" value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="选择日期" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">电子邮箱</div>
<el-form-item><el-input class="addinputInfo addinputw" style="width: 30%" v-model="formobj.e_mail" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">紧急联系人</div>
<el-form-item><el-input class="addinputInfo addinputw" style="width: 30%" v-model="formobj.emergencyContact" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">紧急联系电话</div>
<el-form-item><el-input class="addinputInfo addinputw" style="width: 30%" v-model="formobj.emergencyMobile" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">客户来源</div>
<el-form-item>
<el-select v-model="formobj.sourceKey" class="addinputInfo" clearable filterable placeholder="" @change="sourceChange">
<el-option v-for="item in source_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">客户分类</div>
<el-form-item>
<el-select v-model="formobj.customerClassKey" class="addinputInfo" clearable filterable placeholder="" @change="customerClassChange">
<el-option v-for="item in customerClass_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.remarks" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<div class="title">车辆信息</div>
<el-row>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>车牌号</div>
<el-form-item prop="vehMark"><el-input class="addinputInfo" style="width: 40%" v-model="formobj.vehMark" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>车架号</div>
<el-form-item prop="vinNo"><el-input class="addinputInfo" style="width: 40%" v-model="formobj.vinNo" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">发动机号</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" v-model="formobj.engineNo" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">车型</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" v-model="formobj.vehModel" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">购车日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.buyDate" clearable type="date" placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">行驶里程(Km)</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.mileage = getNumber(formobj.mileage, 2)" v-model="formobj.mileage" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">上次保养里程(Km)</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.lastMileage = getNumber(formobj.lastMileage, 2)" v-model="formobj.lastMileage" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">下次保养日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.nextMaintainDate" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">商业险到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.commercialInsuranceEndDate" clearable type="date" placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">交强险到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.compulsoryInsuranceEndDate" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.carRemarks" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<div class="title">保养到期明细</div>
<el-row>
<el-col :span="12">
<div class="span-sty">行驶里程(Km)</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.currentMileage = getNumber(formobj.currentMileage, 2)" v-model="formobj.currentMileage" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">每月公里</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.monthKm = getNumber(formobj.monthKm, 2)" v-model="formobj.monthKm" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">滤芯到期公里</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.filter_km = getNumber(formobj.filter_km, 2)" v-model="formobj.filter_km" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">滤芯到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.filter_date" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">机油到期公里</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.engineoil_km = getNumber(formobj.engineoil_km, 2)" v-model="formobj.engineoil_km" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">机油到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.engineoil_date" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">齿轮油到期公里</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.gearoil_km = getNumber(formobj.gearoil_km, 2)" v-model="formobj.gearoil_km" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">齿轮油到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.gearoil_date" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">宝轮到期公里</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.treasurewheel_km = getNumber(formobj.treasurewheel_km, 2)" v-model="formobj.treasurewheel_km" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">宝轮到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.treasurewheel_date" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">风扇皮带到期公里</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.fanbelt_km = getNumber(formobj.fanbelt_km, 2)" v-model="formobj.fanbelt_km" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">风扇皮带到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.fanbelt_date" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty">刹车片到期公里</div>
<el-form-item><el-input class="addinputInfo" style="width: 40%" @keyup.native="formobj.brakepads_km = getNumber(formobj.brakepads_km, 2)" v-model="formobj.brakepads_km" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">刹车片到期日期</div>
<el-form-item> <el-date-picker class="addinputInfo" value-format="yyyy-MM-dd" v-model="formobj.brakepads_date" clearable type="date" placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.byRemarks" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</div>
</template>
<script>
import req from '@/api/client/customermanagement'
import { getProvince, getCity, getCounty, typeValues } from '@/api/Common/dictcommons'
export default {
name: 'CustomerManagementAdd',
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
province_list: [],
city_list: [],
county_list: [],
level_list: [],
sex_list: [],
source_list: [],
customerClass_list: [],
formobj: {
name: '',
customerType: '',
customerTypeKey: '',
visitWay: '',
visitWayKey: '',
mobile: '',
weixin: '',
province: '',
city: '',
county: '',
address: '',
level: '',
levelKey: '',
isOnRemind: '',
isOnRemindKey: '',
remind_day: '',
remind_remark: '',
birthday: '',
sex: '',
sexKey: '',
certificateType: '',
certificateTypeKey: '',
idnumber: '',
endDate: '',
e_mail: '',
emergencyContact: '',
emergencyMobile: '',
source: '',
sourceKey: '',
customerClass: '',
customerClassKey: '',
remarks: '',
userSid: '',
orgPath: '',
useOrgSid: '',
sid: '',
customerOrgName: '',
customerOrgSid: '',
customerVehSid: '',
customerSid: '',
vehMark: '',
vinNo: '',
engineNo: '',
vehModelSid: '',
vehModel: '',
mileage: '',
lastMileage: '',
nextMaintainDate: '',
buyDate: '',
commercialInsuranceEndDate: '',
compulsoryInsuranceEndDate: '',
currentMileage: '',
monthKm: '',
filter_km: '',
filter_date: '',
engineoil_km: '',
engineoil_date: '',
gearoil_km: '',
gearoil_date: '',
treasurewheel_km: '',
treasurewheel_date: '',
fanbelt_km: '',
fanbelt_date: '',
brakepads_km: '',
brakepads_date: '',
carRemarks: '',
byRemarks: ''
},
rules: {
name: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
mobile: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }],
vehMark: [{ required: true, message: '车牌号不能为空', trigger: 'blur' }],
vinNo: [{ required: true, message: '车架号不能为空', trigger: 'blur' }]
}
}
},
methods: {
init() {
getProvince().then((res) => {
if (res.success) {
this.province_list = res.data
}
})
typeValues({ type: 'customerLevel' }).then((res) => {
if (res.success) {
this.level_list = res.data
}
})
typeValues({ type: 'sex' }).then((res) => {
if (res.success) {
this.sex_list = res.data
}
})
typeValues({ type: 'customerSource' }).then((res) => {
if (res.success) {
this.source_list = res.data
}
})
},
provinceChange(value) {
const choose = this.province_list.filter((item) => item.name === value)
if (choose !== null && choose.length > 0) {
this.formobj.provinceSid = choose[0].sid
this.getCity(this.formobj.provinceSid)
} else {
this.formobj.provinceSid = ''
this.formobj.citySid = ''
this.formobj.city = ''
this.city_list = []
this.formobj.county = ''
this.formobj.countySid = ''
this.county_list = []
}
},
getCity(val) {
getCity({ sid: val }).then((res) => {
if (res.success) {
this.city_list = res.data
}
})
},
cityChange(value) {
const choose = this.city_list.filter((item) => item.name === value)
if (choose !== null && choose.length > 0) {
this.formobj.citySid = choose[0].sid
this.getCounty(this.formobj.citySid)
}
},
getCounty(val) {
getCounty({ sid: val }).then((res) => {
if (res.success) {
this.county_list = res.data
}
})
},
countyChange(value) {
const choose = this.county_list.filter((item) => item.name === value)
if (choose !== null && choose.length > 0) {
this.formobj.countySid = choose[0].sid
}
},
getNumber(val, limit) {
val = val.replace(/[^0-9.]/g, '') //
val = val.replace(/^00/, '0.') // 0
val = val.replace(/^\./g, '0.') // 0.
val = val.replace(/\.{2,}/g, '.') //
val = val.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); //
/^0\d+/.test(val) ? val = val.slice(1) : '' // 0
const str = '^(\\d+)\\.(\\d{' + limit + '}).*$'
const reg = new RegExp(str)
if (limit === 0) {
//
val = val.replace(reg, '$1')
} else {
//
val = val.replace(reg, '$1.$2')
}
return val
},
showAdd(value, sid) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.init()
if (sid !== '') {
this.viewTitle = '【快捷新增】客户信息'
req.quickAddInit({ sid: sid }).then((resp) => {
if (resp.success) {
this.formobj = resp.data
this.basics(value)
}
})
} else {
this.viewTitle = '【新增】客户信息'
this.basics(value)
}
},
//
basics(value) {
this.formobj.isOnRemind = '否'
this.formobj.isOnRemindKey = '0'
this.formobj.customerType = value.customerType
this.formobj.customerTypeKey = value.customerTypeKey
this.formobj.visitWay = value.visitWay
this.formobj.visitWayKey = value.visitWayKey
this.formobj.userSid = window.sessionStorage.getItem('userSid')
this.formobj.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.formobj.useOrgSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1)
if (this.formobj.customerType === '个人') {
this.formobj.certificateType = '身份证'
this.formobj.certificateTypeKey = '01'
} else {
this.formobj.certificateType = '营业执照'
this.formobj.certificateTypeKey = '02'
}
typeValues({ psid: value.psid, type: 'customerClass' }).then((res) => {
if (res.success) {
this.customerClass_list = res.data
}
})
},
levelChange(value) {
const choose = this.level_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.level = choose[0].dictValue
} else {
this.formobj.level = ''
}
},
isOnRemindChange(val) {
if (val === '是') {
this.formobj.isOnRemindKey = '1'
} else if (val === '否') {
this.formobj.isOnRemindKey = '0'
}
},
sexChange(value) {
const choose = this.sex_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) {
this.formobj.sexKey = choose[0].dictKey
}
},
sourceChange(value) {
const choose = this.source_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.source = choose[0].dictValue
} else {
this.formobj.source = ''
}
},
customerClassChange(value) {
const choose = this.customerClass_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.customerClass = choose[0].dictValue
} else {
this.formobj.customerClass = ''
}
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
if (this.formobj.customerType === '企业' && this.formobj.name.length < 5) {
this.$message({ showClose: true, type: 'error', message: '因客户类型为企业,客户名称的长度应不少于5个汉字' })
return
}
this.submitdisabled = true
req.quickAddSave(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
name: '',
customerType: '',
customerTypeKey: '',
visitWay: '',
visitWayKey: '',
mobile: '',
weixin: '',
province: '',
city: '',
county: '',
address: '',
level: '',
levelKey: '',
isOnRemind: '',
isOnRemindKey: '',
remind_day: '',
remind_remark: '',
birthday: '',
sex: '',
sexKey: '',
certificateType: '',
certificateTypeKey: '',
idnumber: '',
endDate: '',
e_mail: '',
emergencyContact: '',
emergencyMobile: '',
source: '',
sourceKey: '',
customerClass: '',
customerClassKey: '',
remarks: '',
userSid: '',
orgPath: '',
useOrgSid: '',
sid: '',
customerOrgName: '',
customerOrgSid: ''
}
this.submitdisabled = false
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;
vertical-align: middle;
}
</style>

342
yxt-as-ui/src/components/publicPage/selectCustomer.vue

@ -0,0 +1,342 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="选择客户" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customerName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车牌号">
<el-input v-model="listQuery.params.vehMark" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="listQuery.params.mobile" placeholder="" clearable/>
</el-form-item>
<el-form-item label="客户类型">
<el-select v-model="listQuery.params.customerTypeKey" class="addinputw" placeholder="请选择">
<el-option v-for="(item, index) in customerType_list" :key="index.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" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">客户列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50" />
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column fixed label="操作" width="100" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handleAffirm(scope.row)">确认</el-button>
</template>
</el-table-column>
<el-table-column prop="customerName" label="客户名称" width="120" align="center"/>
<el-table-column prop="customerType" label="客户类型" width="120" align="center"/>
<el-table-column prop="vehMark" label="车牌号" width="120" align="center" />
<el-table-column prop="vinNo" label="车架号" width="120" align="center" />
<el-table-column prop="mobile" label="联系电话" width="120" align="center" />
<el-table-column prop="salesCompany" label="销售公司" min-width="120" align="center" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
<!-- 快捷新增客户 -->
<quickAddCustomer ref="divQuickAdd" v-show="viewState == 3" @doback="resetState" @reloadlist="getList" />
<!-- 客户登记 -->
<el-dialog :visible.sync="dialogVisible" width="30%" :show-close="false">
<el-form ref="form_obj" v-model="formobj" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="24">
<div class="span-sty">联络方式</div>
<el-form-item>
<el-select v-model="formobj.visitWayKey" class="addinputInfo" filterable placeholder="" @change="visitWayChange">
<el-option v-for="item in visitWay_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<div class="span-sty">客户类型</div>
<el-form-item>
<el-radio-group class="addinputInfo" v-model="formobj.customerType">
<el-radio v-for="item in customerType_list" :key="item.dictKey" :label="item.dictValue" @change="customerTypeChange">{{ item.dictValue }}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleConfirm()"> </el-button>
<el-button @click="dialogVisible = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import { customerList, typeValues } from '@/api/Common/dictcommons'
import quickAddCustomer from './quickAddCustomer'
export default {
name: 'Customer',
components: {
Pagination,
pageye,
ButtonBar,
quickAddCustomer
},
data() {
return {
btndisabled: false,
isQuickAdd: false, //
btnList: [
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toQuickAdd',
btnLabel: '快捷新增客户'
},
{
type: 'primary',
size: 'small',
icon: 'plus',
btnKey: 'toAdd',
btnLabel: '新增客户'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
customerName: '',
vehMark: '',
vinNo: '',
mobile: '',
customerTypeKey: '',
billType: '',
useOrgSid: ''
}
},
dialogVisible: false,
formobj: {
visitWay: '', //
visitWayKey: '',
customerType: '', //
customerTypeKey: '',
psid: ''
},
visitWay_list: [],
customerType_list: []
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
init() {
typeValues({ type: 'visitWay' }).then((res) => {
if (res.success) {
this.visitWay_list = res.data
}
})
typeValues({ type: 'customerType' }).then((res) => {
if (res.success) {
this.customerType_list = res.data
}
})
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'toQuickAdd':
this.toQuickAdd()
break
case 'toAdd':
this.toAdd()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
// sid
handleSelectionChange(row) {
const aa = []
this.multipleSelection = row
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
showData(deptSid, type) {
this.init()
this.listQuery.params.useOrgSid = deptSid
this.listQuery.params.billType = type // type
this.getList()
},
//
getList() {
this.listLoading = true
customerList(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery.current = 1
this.listQuery.total = 0
this.listQuery.size = 5
this.listQuery.params.customerName = ''
this.listQuery.params.vehMark = ''
this.listQuery.params.vinNo = ''
this.listQuery.params.mobile = ''
this.listQuery.params.customerTypeKey = ''
this.getList()
},
toQuickAdd() {
if (this.sids.length === 1) {
this.dialogVisible = true
this.isQuickAdd = true
this.formobj = {
visitWay: '', //
visitWayKey: '',
customerType: '', //
customerTypeKey: '',
psid: ''
}
} else {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录进行操作' })
}
},
toAdd() {
this.dialogVisible = true
this.isQuickAdd = false
this.formobj = {
visitWay: '', //
visitWayKey: '',
customerType: '', //
customerTypeKey: '',
psid: ''
}
},
visitWayChange(value) {
const choose = this.visitWay_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.visitWay = choose[0].dictValue
}
},
customerTypeChange(value) {
const choose = this.customerType_list.filter((item) => item.dictValue === value)
if (choose.length > 0 && choose !== null) {
this.formobj.customerTypeKey = choose[0].dictKey
this.formobj.psid = choose[0].sid
}
},
handleConfirm() {
if (this.formobj.customerType !== '' && this.formobj.visitWay !== '') {
this.dialogVisible = false
if (this.isQuickAdd) {
this.viewState = 3
this.$refs['divQuickAdd'].showAdd(this.formobj, this.sids[0])
} else {
this.viewState = 3
this.$refs['divQuickAdd'].showAdd(this.formobj, '')
}
} else {
this.$message({ showClose: true, message: '请填写联络方式和客户类型', type: 'warning' })
}
},
handleAffirm(row) {
this.$emit('backData', row)
},
resetState() {
this.viewState = 1
},
doClose() {
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 100px !important;
}
.addinputInfo {
margin-left: 90px !important;
}
</style>

28
yxt-as-ui/src/views/client/customermanagement/customermanagementAdd.vue

@ -30,16 +30,6 @@
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.weixin" clearable placeholder="" /></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerType == '个人'">
<el-col :span="24">
<div class="span-sty">公司名称</div>
<el-form-item>
<el-select class="addinputInfo" style="width: 40%" v-model="formobj.customerOrgSid" filterable clearable placeholder="" @change="customerOrgChange">
<el-option v-for="item in customerOrg_list" :key="item.sid" :label="item.orgName" :value="item.sid"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户地址</div>
@ -174,7 +164,6 @@ export default {
viewTitle: '',
viewState: 1,
submitdisabled: false,
customerOrg_list: [],
province_list: [],
city_list: [],
county_list: [],
@ -250,19 +239,6 @@ export default {
this.source_list = res.data
}
})
req.selCustomerOrgList({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((res) => {
if (res.success) {
this.customerOrg_list = res.data
}
})
},
customerOrgChange(value) {
const choose = this.customerOrg_list.filter((item) => item.sid === value)
if (choose.length > 0 && choose !== null) {
this.formobj.customerOrgName = choose[0].orgName
} else {
this.formobj.customerOrgName = ''
}
},
provinceChange(value) {
const choose = this.province_list.filter((item) => item.name === value)
@ -405,7 +381,6 @@ export default {
this.$message({ showClose: true, type: 'error', message: '因客户类型为企业,客户名称的长度应不少于5个汉字' })
return
}
this.submitdisabled = true
if (this.formobj.sid === '') {
const tip = '客户名称、联系电话一经保存,无法修改,是否继续保存'
this.$confirm(tip, '提示', {
@ -413,7 +388,7 @@ export default {
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
console.log(this.formobj)
this.submitdisabled = true
req.save(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
@ -426,6 +401,7 @@ export default {
})
})
} else {
this.submitdisabled = true
req.update(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })

6
yxt-as-ui/src/views/client/customermanagement/customermanagementInfo.vue

@ -29,12 +29,6 @@
<el-form-item><span class="addinputInfo">{{ formobj.weixin }}</span></el-form-item>
</el-col>
</el-row>
<el-row v-if="formobj.customerType == '个人'">
<el-col :span="24">
<div class="span-sty">公司名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrgName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户地址</div>

179
yxt-as-ui/src/views/maintenanceReceive/index.vue

@ -10,29 +10,60 @@
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="维修状态">
<el-select v-model="queryParams.params.repairState" filterable clearable placeholder="请选择"
style="width:100%">
<el-option v-for="item in repairTypeList" :key="item.sid" :label="item.name" :value="item.name">
</el-option>
<el-select
v-model="queryParams.params.repairState"
filterable
clearable
placeholder="请选择"
style="width:100%"
>
<el-option v-for="item in repairTypeList" :key="item.sid" :label="item.name" :value="item.name" />
</el-select>
</el-form-item>
<el-form-item label="工单编号">
<el-input v-model="queryParams.params.billNo" placeholder="" clearable />
</el-form-item>
<el-form-item label="工单类型">
<el-select v-model="queryParams.params.billType" filterable clearable placeholder="请选择"
style="width:100%">
<el-option v-for="item in billTypeList" :key="item.dictKey" :label="item.dictValue"
:value="item.dictValue">
</el-option>
<el-select
v-model="queryParams.params.billType"
filterable
clearable
placeholder="请选择"
style="width:100%"
>
<el-option
v-for="item in billTypeList"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="科目">
<el-select v-model="queryParams.params.subject" filterable clearable placeholder="请选择"
style="width:100%">
<el-option v-for="item in subjectList" :key="item.subjectSid" :label="item.subject"
:value="item.subject">
</el-option>
<el-select
v-model="queryParams.params.subject"
filterable
clearable
placeholder="请选择"
style="width:100%"
>
<el-option
v-for="item in subjectList"
:key="item.subjectSid"
:label="item.subject"
:value="item.subject"
/>
</el-select>
</el-form-item>
<el-form-item label="完成状态">
<el-select
v-model="queryParams.params.completeState"
filterable
clearable
placeholder="请选择"
style="width:100%"
>
<el-option v-for="item in completeStateList" :key="item.sid" :label="item.name" :value="item.sid" />
</el-select>
</el-form-item>
<el-form-item label="客户名称">
@ -45,13 +76,23 @@
<el-input v-model="queryParams.params.vinNo" placeholder="" clearable />
</el-form-item>
<el-form-item label="进厂日期">
<el-date-picker v-model="queryParams.params.createTimeStart" type="date" placeholder="选择日期"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;">
</el-date-picker>
<el-date-picker
v-model="queryParams.params.createTimeStart"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
style="width: 200px;"
/>
<el-date-picker v-model="queryParams.params.createTimeEnd" type="date" placeholder="选择日期"
format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;">
</el-date-picker>
<el-date-picker
v-model="queryParams.params.createTimeEnd"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
style="width: 200px;"
/>
</el-form-item>
</el-form>
@ -68,8 +109,13 @@
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%"
@selection-change="selectionLineChangeHandle">
<el-table
v-loading="tableLoading"
:data="dataList"
border
style="width: 100%"
@selection-change="selectionLineChangeHandle"
>
<el-table-column fixed width="50" type="selection" align="center" />
<el-table-column fixed width="80" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="repairState" label="维修状态" align="center" />
@ -95,8 +141,14 @@
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="dataList.length > 0" :total="queryParams.total" :page.sync="queryParams.current"
:limit.sync="queryParams.size" class="pagination" @pagination="loadList" />
<pagination
v-show="dataList.length > 0"
:total="queryParams.total"
:page.sync="queryParams.current"
:limit.sync="queryParams.size"
class="pagination"
@pagination="loadList"
/>
</div>
</div>
</div>
@ -131,7 +183,7 @@
divOutInfo,
divReturnInfo,
divConfirmInfo,
divInfo,
divInfo
},
data() {
@ -177,27 +229,37 @@
size: 10,
total: 0,
params: {
"repairState": "",
"billNo": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"createTimeStart": "",
"createTimeEnd": "",
'repairState': '',
'billNo': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'createTimeStart': '',
'createTimeEnd': '',
'completeState': '0'
}
},
sids: [],
selectionList: [],
repairTypeList: [{
name: "维修中",
sid: "1"
name: '维修中',
sid: '1'
},
{
name: '维修完成',
sid: '2'
}
],
completeStateList: [{
name: '未完成',
sid: '0'
},
{
name: "维修完成",
sid: "2"
name: '已完成',
sid: '1'
}
],
billTypeList: [],
@ -229,19 +291,17 @@
this.subjectList = resp.data
}
})
},
selectionLineChangeHandle(val) {
console.log("val", val);
console.log('val', val)
this.selectionList = val
const aa = []
val.forEach(element => {
aa.push(element.sid)
aa.push(element.billSid)
})
this.sids = aa
},
//
clicksearchShow() {
@ -274,7 +334,7 @@
toOut() {
// this.$refs['divOutInfo'].showAdd('236195bd-2c76-4e39-aacb-e6ed89b4ca3d')
// this.viewState = 2
if (this.sids.length === 1) {
if (this.sids.length == 1) {
this.viewState = 2
this.$refs['divOutInfo'].showAdd(this.sids[0])
} else {
@ -288,7 +348,7 @@
toReturn() {
// this.$refs['divReturnInfo'].showAdd('4e2b2a7d-d86c-415f-aa69-65e311a73c50')
// this.viewState = 3
if (this.sids.length === 1) {
if (this.sids.length == 1) {
this.viewState = 3
this.$refs['divReturnInfo'].showAdd(this.sids[0])
} else {
@ -303,9 +363,7 @@
// this.viewState = 4
// this.$refs['divConfirmInfo'].showAdd('4e2b2a7d-d86c-415f-aa69-65e311a73c50')
if (this.sids.length === 1) {
if (this.selectionList[0].repairState == '2') {
if (this.selectionList[0].repairState == '维修完成') {
this.viewState = 4
this.$refs['divConfirmInfo'].showAdd(this.sids[0])
} else {
@ -315,7 +373,6 @@
message: '只能选择维修完成的工单'
})
}
} else {
this.$message({
showClose: true,
@ -331,6 +388,9 @@
loadList() {
this.tableLoading = true
this.queryParams.params.userSid = window.sessionStorage.getItem('userSid')
this.queryParams.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.queryParams.params.menuUrl = this.$route.path
req.listPage(this.queryParams).then((resp) => {
this.tableLoading = false
if (resp.success) {
@ -363,15 +423,16 @@
size: 10,
total: 0,
params: {
"repairState": "",
"billNo": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"createTimeStart": "",
"createTimeEnd": "",
'repairState': '',
'billNo': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'createTimeStart': '',
'createTimeEnd': '',
'completeState': '0'
}
}
this.loadList()
@ -383,8 +444,8 @@
showResult(row) {
this.viewState = 5
this.$refs['divAdd'].showAdd(row.sid)
},
this.$refs['divInfo'].showInfo(row.billSid)
}
}
}
</script>

3
yxt-as-ui/src/views/maintenanceReceive/maintenanceOutbound.vue

@ -492,8 +492,7 @@
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveBill(this.formobj)
req.saveOutBill(this.formobj)
.then(resp => {
if (resp.success) {
this.$message({

199
yxt-as-ui/src/views/maintenanceReceive/maintenanceReturnBound.vue

@ -26,14 +26,14 @@
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 申请人</div>
<el-form-item prop="createByName">
<span class="addinputw addinputInfo">{{formobj.createByName}}</span>
<span class="addinputw addinputInfo">{{ formobj.createByName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 申请部门</div>
<el-form-item prop="deptName">
<span class="addinputw addinputInfo">{{formobj.deptName}}</span>
<span class="addinputw addinputInfo">{{ formobj.deptName }}</span>
</el-form-item>
</el-col>
@ -51,10 +51,15 @@
<el-col :span="8">
<div class="span-sty"><span class="must">*</span> 退料人</div>
<el-form-item prop="warehouseManager">
<el-select v-model="formobj.warehouseManager" filterable clearable placeholder="请选择"
class="addinputw addinputInfo" @change="receivePerSelect">
<el-option v-for="item in receivePerList" :key="item.sid" :label="item.name" :value="item.sid">
</el-option>
<el-select
v-model="formobj.warehouseManager"
filterable
clearable
placeholder="请选择"
class="addinputw addinputInfo"
@change="receivePerSelect"
>
<el-option v-for="item in receivePerList" :key="item.sid" :label="item.name" :value="item.sid" />
</el-select>
</el-form-item>
@ -77,14 +82,14 @@
<el-col :span="8">
<div class="span-sty">维修工单编号</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.sourceBillNo}}</span>
<span class="addinputw addinputInfo">{{ formobj.sourceBillNo }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">单据日期</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.billDate}}</span>
<span class="addinputw addinputInfo">{{ formobj.billDate }}</span>
</el-form-item>
</el-col>
@ -101,21 +106,21 @@
<el-col :span="8">
<div class="span-sty">工单类型</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.billType}}</span>
<span class="addinputw addinputInfo">{{ formobj.billType }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">科目</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.subject}}</span>
<span class="addinputw addinputInfo">{{ formobj.subject }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否外出</div>
<el-form-item>
<el-radio-group class="addinputw addinputInfo" :disabled="true" v-model="formobj.isGoOut">
<el-radio-group v-model="formobj.isGoOut" class="addinputw addinputInfo" :disabled="true">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
@ -129,14 +134,14 @@
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.customerName}}</span>
<span class="addinputw addinputInfo">{{ formobj.customerName }}</span>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车牌号/车架号</div>
<el-form-item>
<span class="addinputw addinputInfo">{{formobj.vehMark}}/{{formobj.vinNo}}</span>
<span class="addinputw addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span>
</el-form-item>
</el-col>
@ -185,20 +190,27 @@
-->
<el-table-column label="仓库" align="center" width="180">
<template slot-scope="scope">
<el-select v-model="scope.row.warehouseName" placeholder="请选择" clearable
@change="selectWarehouseName(scope.row,$event)">
<el-option v-for="(item,i) in warehouseList" :key="i" :label="item.warehouseName" :value="item.sid">
</el-option>
<el-select
v-model="scope.row.warehouseName"
placeholder="请选择"
clearable
@change="selectWarehouseName(scope.row,$event)"
>
<el-option v-for="(item,i) in warehouseList" :key="i" :label="item.warehouseName" :value="item.sid" />
</el-select>
</template>
</el-table-column>
<el-table-column label="库位" align="center" width="180">
<template slot-scope="scope">
<el-select v-model="scope.row.warehouseRackCode" :disabled="scope.row.warehouseName==''" clearable
@focus="getWarehouseAreaList(scope.row.warehouseSid)" placeholder="请选择"
@change="selectWarehouseAreaCode(scope.row,$event)">
<el-option v-for="(item,i) in warehouseRackList" :key="i" :label="item.areaCode" :value="item.sid">
</el-option>
<el-select
v-model="scope.row.warehouseRackCode"
:disabled="scope.row.warehouseName==''"
clearable
placeholder="请选择"
@focus="getWarehouseAreaList(scope.row.warehouseSid)"
@change="selectWarehouseAreaCode(scope.row,$event)"
>
<el-option v-for="(item,i) in warehouseRackList" :key="i" :label="item.areaCode" :value="item.sid" />
</el-select>
</template>
</el-table-column>
@ -206,8 +218,12 @@
<el-table-column label="已出数量" prop="outboundCount" align="center" />
<el-table-column label="退库数量" align="center" width="120">
<template slot-scope="scope">
<el-input v-model="scope.row.count" clearable placeholder=""
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
<el-input
v-model="scope.row.count"
clearable
placeholder=""
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"
/>
</template>
</el-table-column>
<el-table-column label="销售单价" prop="price" align="center" />
@ -242,7 +258,7 @@
} from '@/utils/index.js'
export default {
components: {
chooseproducts,
chooseproducts
},
data() {
return {
@ -251,33 +267,33 @@
submitdisabled: false,
formobj: {
"sid": "",
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"warehouseManagerSid": "",
"warehouseManager": "",
"useOrgSid": "",
"createOrgSid": "",
"deptSid": window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
'sid': '',
'createBySid': window.sessionStorage.getItem('userSid'),
'createByName': window.sessionStorage.getItem('name'),
'sourceBillSid': '',
'warehouseManagerSid': '',
'warehouseManager': '',
'useOrgSid': '',
'createOrgSid': '',
'deptSid': window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1),
"deptName": window.sessionStorage.getItem('defaultOrgPathName').substring(window
'deptName': window.sessionStorage.getItem('defaultOrgPathName').substring(window
.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1),
"createTime": getCurrentDate(),
"remarks": "",
"sourceBillNo": "",
"waitorName": "",
"billDate": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"customerOrg": "",
"sitemVoList": [
'createTime': getCurrentDate(),
'remarks': '',
'sourceBillNo': '',
'waitorName': '',
'billDate': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'customerOrg': '',
'sitemVoList': [
],
"detailList": [
'detailList': [
]
},
@ -304,7 +320,7 @@
required: true,
message: '请选择领料人',
trigger: 'change'
}],
}]
}
}
@ -318,12 +334,9 @@
if (res.success) {
this.receivePerList = res.data
console.log("aaaaaa", this.receivePerList);
console.log('aaaaaa', this.receivePerList)
}
})
},
showAdd(sid) {
@ -351,7 +364,6 @@
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createTime = getCurrentDate()
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
@ -360,14 +372,11 @@
this.formobj.useOrgSid = res.data
}
})
} else {
// resp.code
}
})
.catch(() => {})
},
backData(value) {
this.viewState = 1
@ -390,7 +399,6 @@
this.formobj.createByName = window.sessionStorage.getItem('name')
this.formobj.createTime = getCurrentDate()
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
@ -399,14 +407,11 @@
this.formobj.useOrgSid = res.data
}
})
} else {
// resp.code
}
})
.catch(() => {})
},
resetState() {
this.viewState = 1
@ -422,8 +427,7 @@
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveBill(this.formobj)
req.saveQuitBill(this.formobj)
.then(resp => {
if (resp.success) {
this.$message({
@ -437,40 +441,39 @@
}
})
.catch(() => {})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
"sid": "",
"createBySid": window.sessionStorage.getItem('userSid'),
"createByName": window.sessionStorage.getItem('name'),
"sourceBillSid": "",
"warehouseManagerSid": "",
"warehouseManager": "",
"useOrgSid": "",
"createOrgSid": "",
"deptSid": window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem(
'sid': '',
'createBySid': window.sessionStorage.getItem('userSid'),
'createByName': window.sessionStorage.getItem('name'),
'sourceBillSid': '',
'warehouseManagerSid': '',
'warehouseManager': '',
'useOrgSid': '',
'createOrgSid': '',
'deptSid': window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem(
'defaultOrgPath').lastIndexOf('/') + 1),
"deptName": window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem(
'deptName': window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem(
'defaultOrgPathName').lastIndexOf('/') + 1),
"createTime": getCurrentDate(),
"remarks": "",
"sourceBillNo": "",
"waitorName": "",
"billDate": "",
"billType": "",
"subject": "",
"customerName": "",
"vehMark": "",
"vinNo": "",
"customerOrg": "",
"sitemVoList": [
'createTime': getCurrentDate(),
'remarks': '',
'sourceBillNo': '',
'waitorName': '',
'billDate': '',
'billType': '',
'subject': '',
'customerName': '',
'vehMark': '',
'vinNo': '',
'customerOrg': '',
'sitemVoList': [
],
"detailList": [
'detailList': [
]
}
@ -488,18 +491,17 @@
},
getWarehouseList() {
console.log("getWarehouseList>>>>>>>>>>>>>");
console.log('getWarehouseList>>>>>>>>>>>>>')
var parpams = {
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}
console.log("getWarehouseList", parpams);
console.log('getWarehouseList', parpams)
req2.getWarehouses(parpams).then((res) => {
if (res.success) {
this.warehouseList = res.data
console.log("aaaaaa", this.warehouseList);
console.log('aaaaaa', this.warehouseList)
}
})
},
@ -511,14 +513,13 @@
if (res.success) {
this.warehouseRackList = res.data
console.log("bbbbb", this.warehouseRackList);
console.log('bbbbb', this.warehouseRackList)
}
})
},
selectWarehouseName(row, val) {
console.log("selectWarehouseName", row);
console.log("selectWarehouseName", val);
console.log('selectWarehouseName', row)
console.log('selectWarehouseName', val)
const choose = this.warehouseList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectWarehouseName', choose)
row.warehouseName = choose[0].warehouseName
@ -526,27 +527,23 @@
row.warehouseRackCode = ''
row.warehouseRackSid = ''
},
selectWarehouseAreaCode(row, val) {
console.log("selectWarehouseAreaCode", val);
console.log('selectWarehouseAreaCode', val)
const choose = this.warehouseRackList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectWarehouseAreaCode', choose)
row.warehouseRackCode = choose[0].areaCode
row.warehouseRackSid = choose[0].sid
},
returnAll() {
for (var i = 0; i < this.formobj.detailList.length; i++) {
var item = this.formobj.detailList[i]
item.count = item.outboundCount
}
}
}
}
</script>

35
yxt-as-ui/src/views/maintenanceReceive/repairbillInfo.vue

@ -4,7 +4,6 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="negativeSettlement()">反结算</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -78,7 +77,8 @@
<el-col :span="8">
<div class="span-sty">特殊标注</div>
<el-form-item><span
class="addinputInfo">{{ formobj.isSpecialSign == '1' ? '有' : '否' }}</span></el-form-item>
class="addinputInfo"
>{{ formobj.isSpecialSign == '1' ? '有' : '否' }}</span></el-form-item>
</el-col>
</el-row>
<el-collapse v-model="activeNames">
@ -143,21 +143,29 @@
<el-col :span="8">
<div class="span-sty">责任划分</div>
<el-form-item><span
class="addinputInfo">{{ formobj.insuranceVo.responsibility }}</span></el-form-item>
class="addinputInfo"
>{{ formobj.insuranceVo.responsibility }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">责任比例</div>
<el-form-item><span
class="addinputInfo">{{ formobj.insuranceVo.responsibilityRatio }}</span></el-form-item>
class="addinputInfo"
>{{ formobj.insuranceVo.responsibilityRatio }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否存在人伤</div>
<el-form-item><span
class="addinputInfo">{{ formobj.insuranceVo.isPersonInjuries == '1' ? '是' : formobj.insuranceVo.isPersonInjuries == '0' ? '否' : '' }}</span></el-form-item>
class="addinputInfo"
>{{ formobj.insuranceVo.isPersonInjuries == '1' ? '是' : formobj.insuranceVo.isPersonInjuries == '0' ? '否' : '' }}</span></el-form-item>
</el-col>
</el-row>
<el-table :key="insuranceKey" :data="formobj.insuranceVo.insuranceList" :index="index" border
style="width: 100%">
<el-table
:key="insuranceKey"
:data="formobj.insuranceVo.insuranceList"
:index="index"
border
style="width: 100%"
>
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
<el-table-column prop="useInsurer" label="使用保险方" align="center" min-width="150" />
<el-table-column prop="insuranceType" label="使用险种" align="center" min-width="150" />
@ -172,7 +180,8 @@
<el-col :span="8">
<div class="span-sty">是否开发票</div>
<el-form-item><span
class="addinputInfo">{{ formobj.invoiceVo.isInvoicing == '1' ? '是' : formobj.invoiceVo.isInvoicing == '0' ? '否' : '' }}</span></el-form-item>
class="addinputInfo"
>{{ formobj.invoiceVo.isInvoicing == '1' ? '是' : formobj.invoiceVo.isInvoicing == '0' ? '否' : '' }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">发票类型</div>
@ -253,7 +262,7 @@
<el-form-item><span class="addinputInfo">{{ formobj.rescueRemarks }}</span></el-form-item>
</el-col>
<el-col :span="8">
<span></span>
<span />
</el-col>
</el-row>
<el-table :key="subjoinKey" :data="formobj.aitemVos" :index="index" border style="width: 100%">
@ -266,14 +275,14 @@
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">应收合计</div>
<el-form-item><span class="addinputInfo">{{ ysTotal }} = 工时费{{ gsfTotal }} + 材料费{{ clfTotal }} +
附加费{{ fjfTotal }} + 税额0</span></el-form-item>
附加费{{ fjfTotal }} + 税额0</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="border-right: 0px">实收合计</div>
<el-form-item><span class="addinputInfo">{{ ssTotal }} = 应收合计{{ ysTotal }} -
优惠{{ yhTotal }}</span></el-form-item>
优惠{{ yhTotal }}</span></el-form-item>
</el-col>
</el-row>
</el-form>
@ -439,8 +448,8 @@
fjfTotal() {
let fjf = '0'
fjf = parseFloat(this.formobj.outAmount !== '' ? this.formobj.outAmount : '0') + parseFloat(this.formobj
.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') + parseFloat(this.formobj.rescueAmount !== '' ?
this.formobj.rescueAmount : '0')
.subsidyAmount !== '' ? this.formobj.subsidyAmount : '0') + parseFloat(this.formobj.rescueAmount !== ''
? this.formobj.rescueAmount : '0')
if (this.formobj.aitemVos.length > 0) {
this.formobj.aitemVos.forEach((e) => {
if (e.aitemName !== '') {

89
yxt-as-ui/src/views/operation/preregistration/preregistrationAdd.vue

@ -52,7 +52,15 @@
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>科目</div>
<el-form-item prop="subject">
<el-select class="addinputInfo" v-model="formobj.subject" placeholder="请选择" @change="changeSubject" clearable filterable>
<el-option v-for="item in subject_list" :key="item.subjectSid" :label="item.subject" :value="item.subject"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">备注</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.remarks" clearable placeholder="" /></el-form-item>
</el-col>
@ -72,12 +80,6 @@
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>服务项目</div>
<el-button type="primary" size="mini" class="btntopblueline" @click="serviceAdd">添加</el-button>
@ -106,21 +108,9 @@
</el-popover>
</template>
</el-table-column>
<el-table-column label="工时单价" align="center" width="150">
<template slot-scope="scope">
<el-input @input="computeXSJ(scope.row)" @keyup.native="scope.row.hourPrice = getNumber(scope.row.hourPrice, 2)" v-model="scope.row.hourPrice" clearable placeholder="" />
</template>
</el-table-column>
<el-table-column label="工时数" align="center" width="150">
<template slot-scope="scope">
<el-input @input="computeXSJ(scope.row)" @keyup.native="scope.row.hours = getNumber(scope.row.hours, 2)" v-model="scope.row.hours" clearable placeholder="" />
</template>
</el-table-column>
<el-table-column label="销售价" align="center" width="150">
<template slot-scope="scope">
<el-input @input="computeGSS(scope.row)" @keyup.native="scope.row.price = getNumber(scope.row.price, 2)" v-model="scope.row.price" clearable placeholder="" />
</template>
</el-table-column>
<el-table-column prop="hourPrice" label="工时单价" align="center" width="150" />
<el-table-column prop="hours" label="工时数" align="center" width="150" />
<el-table-column prop="price" label="销售价" align="center" width="150" />
<el-table-column label="备注" align="center" min-width="200">
<template slot-scope="scope">
<el-input v-model="scope.row.remarks" clearable placeholder="" />
@ -151,20 +141,19 @@
</div>
</div>
<!-- 选择客户 -->
<customer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
<selectCustomer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
</div>
</template>
<script>
import req from '@/api/operation/preregistration'
import maintenanceitem from '@/api/basicinformation/maintenanceitem'
import { selAllByOrgSidPath } from '@/api/Common/dictcommons'
import customer from './relation/customer'
import { selAllByOrgSidPath, selSubjectInfo, getServiceItemListPage } from '@/api/Common/dictcommons'
import selectCustomer from '@/components/publicPage/selectCustomer'
export default {
name: 'PreregistrationAdd',
components: {
customer
selectCustomer
},
data() {
return {
@ -173,6 +162,7 @@ export default {
submitdisabled: false,
index: 0,
user_list: [],
subject_list: [],
// service
serviceKey: 1,
serviceLoading: false,
@ -182,8 +172,8 @@ export default {
total: 0,
params: {
sitemName: '',
type: '0',
orgPath: ''
useOrgSid: '',
subject: ''
}
},
serviceData: [],
@ -212,9 +202,13 @@ export default {
deptSid: '',
deptName: '',
customerOrg: '',
userSid: ''
userSid: '',
subjectSid: '',
subject: ''
},
rules: {}
rules: {
subject: [{ required: true, message: '科目不能为空', trigger: 'change' }]
}
}
},
methods: {
@ -244,6 +238,11 @@ export default {
this.user_list = resp.data
}
})
selSubjectInfo({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((resp) => {
if (resp.success) {
this.subject_list = resp.data
}
})
},
showAdd() {
this.viewTitle = '【新增】预约单'
@ -298,18 +297,16 @@ export default {
},
selectCustomer() {
this.viewState = 2
this.$refs['divCus'].getList()
this.$refs['divCus'].showData(this.formobj.deptSid, '')
},
backData(value) {
this.viewState = 1
value = JSON.parse(JSON.stringify(value))
this.formobj.customerName = value.name
this.formobj.customerName = value.customerName
this.formobj.customerSid = value.sid
this.formobj.mobile = value.mobile
this.formobj.vehMark = value.vehMark
this.formobj.vehModel = value.vehModel
this.formobj.vinNo = value.vinNo
this.formobj.customerOrg = value.orgName
},
waitorChange(value) {
const choose = this.user_list.filter((item) => item.name === value)
@ -319,6 +316,14 @@ export default {
this.formobj.waitorSid = ''
}
},
changeSubject(value) {
const choose = this.subject_list.filter((item) => item.subject === value)
if (choose.length > 0 && choose !== null) {
this.formobj.subjectSid = choose[0].subjectSid
} else {
this.formobj.subjectSid = ''
}
},
serviceAdd() {
this.formobj.sitemVos.push({
serviceItemSid: '',
@ -330,10 +335,15 @@ export default {
})
},
serviceInput(value) {
this.serviceQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
if (this.formobj.subjectSid === '') {
this.$message({ showClose: true, type: 'error', message: '请先选择科目' })
return
}
this.serviceQuery.params.useOrgSid = this.formobj.deptSid
this.serviceQuery.params.sitemName = value
this.serviceQuery.params.subject = this.formobj.subject
this.serviceLoading = true
maintenanceitem.listPage(this.serviceQuery).then((response) => {
getServiceItemListPage(this.serviceQuery).then((response) => {
if (response.success) {
this.serviceLoading = false
this.serviceData = response.data.records
@ -398,7 +408,6 @@ export default {
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
@ -501,7 +510,9 @@ export default {
deptSid: '',
deptName: '',
customerOrg: '',
userSid: ''
userSid: '',
subjectSid: '',
subject: ''
}
this.submitdisabled = false
this.$emit('doback')

20
yxt-as-ui/src/views/operation/preregistration/preregistrationInfo.vue

@ -38,7 +38,11 @@
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-col :span="8">
<div class="span-sty">科目</div>
<el-form-item><span class="addinputInfo">{{ formobj.subject }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">备注</div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
@ -58,12 +62,6 @@
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">服务项目</div>
<el-table :key="serviceKey" :data="formobj.sitemVos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center" />
@ -120,7 +118,9 @@ export default {
deptSid: '',
deptName: '',
customerOrg: '',
userSid: ''
userSid: '',
subjectSid: '',
subject: ''
}
}
},
@ -166,7 +166,9 @@ export default {
deptSid: '',
deptName: '',
customerOrg: '',
userSid: ''
userSid: '',
subjectSid: '',
subject: ''
}
this.$emit('doback')
}

192
yxt-as-ui/src/views/operation/preregistration/relation/customer.vue

@ -1,192 +0,0 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="选择客户" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.name" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车牌号">
<el-input v-model="listQuery.params.vehMark" placeholder="" clearable/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="listQuery.params.mobile" placeholder="" clearable/>
</el-form-item>
<el-form-item label="客户单位">
<el-input v-model="listQuery.params.orgName" placeholder="" clearable/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">客户列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;">
<el-table-column fixed label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column fixed label="操作" width="100" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handleConfirm(scope.row)">确认</el-button>
</template>
</el-table-column>
<el-table-column prop="name" label="客户名称" width="120" align="center"/>
<el-table-column prop="vehMark" label="车牌号" width="120" align="center" />
<el-table-column prop="vinNo" label="车架号" width="120" align="center" />
<el-table-column prop="mobile" label="联系电话" width="120" align="center" />
<el-table-column prop="orgName" label="客户单位" min-width="120" align="center" />
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import { customerListPage } from '@/api/Common/dictcommons'
export default {
name: 'Customer',
components: {
Pagination,
pageye,
ButtonBar
},
data() {
return {
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 5,
total: 0,
params: {
orgPath: '',
name: '',
vehMark: '',
mobile: '',
orgName: '',
vinNo: ''
}
}
}
},
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 'doClose':
this.doClose()
break
default:
break
}
},
//
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.orgPath = window.sessionStorage.getItem('defaultOrgPath')
customerListPage(this.listQuery).then(response => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 5,
total: 0,
params: {
orgPath: '',
name: '',
vehMark: '',
mobile: '',
orgName: '',
vinNo: ''
}
}
this.getList()
},
handleConfirm(row) {
this.$emit('backData', row)
},
doClose() {
this.$emit('doback')
}
}
}
</script>
<style scoped>
</style>

70
yxt-as-ui/src/views/operation/repairbill/repairbillAdd.vue

@ -7,7 +7,7 @@
<el-button type="primary" size="small" :disabled="submitdisabled" @click="selectCustomer()" v-show="formobj.nodeName == '登记'">选择客户</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()" v-show="formobj.nodeName !== '结算'">提交</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toSendBack" v-show="formobj.nodeName !== '结算' && formobj.nodeName !== '出厂'">退回</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toSendBack" v-show="formobj.nodeName !== '结算' && formobj.nodeName !== '登记' && formobj.nodeName !== '出厂'">退回</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="confirmCLF()" v-show="formobj.nodeName == '结算' && formobj.subject == '保内'">确认材料费</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="toPrintSettle()" v-show="formobj.nodeName == '结算' && formobj.subject == '保外'">打印结算单</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="settleAccounts()" v-show="formobj.nodeName == '结算'">结算</el-button>
@ -51,7 +51,7 @@
<div class="span-sty">索赔厂家</div>
<el-form-item>
<el-select class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.claimManufacturer" placeholder="请选择" @change="changeClaimManufacturer" clearable filterable>
<el-option v-for="item in claimManufacturer_list" :key="item.claimManufacturerSid" :label="item.claimManufacturer" :value="item.claimManufacturer"></el-option>
<el-option v-for="item in claimManufacturer_list" :key="item.sid" :label="item.claiManuName" :value="item.claiManuName"></el-option>
</el-select>
</el-form-item>
</el-col>
@ -61,8 +61,8 @@
<div class="span-sty"><span class="icon">*</span>是否外出</div>
<el-form-item prop="isGoOut">
<el-radio-group class="addinputInfo" :disabled="formobj.nodeName == '维修' || formobj.nodeName == '结算' || formobj.nodeName == '出厂'" v-model="formobj.isGoOut">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
<el-radio label="1"></el-radio>
<el-radio label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
@ -472,7 +472,7 @@
</div>
</div>
<!-- 选择客户 -->
<customer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
<selectCustomer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
<!-- 结算 -->
<el-dialog :visible.sync="settleVisible" width="70%">
<el-form ref="formobj" :model="formobj" :rules="rules" class="formaddcopy02">
@ -543,16 +543,15 @@
<script>
import req from '@/api/operation/repairbill'
import maintenanceitem from '@/api/basicinformation/maintenanceitem'
import additionitem from '@/api/basicinformation/additionitem'
import { selAllByOrgSidPath, selSubjectInfo, getGroupList, typeValues } from '@/api/Common/dictcommons'
import customer from '../../operation/preregistration/relation/customer'
import { selAllByOrgSidPath, selSubjectInfo, getGroupList, typeValues, getListByUseOrgSid, getServiceItemListPage } from '@/api/Common/dictcommons'
import selectCustomer from '@/components/publicPage/selectCustomer'
import { getStorage } from '@/utils/auth'
export default {
name: 'RepairBillAdd',
components: {
customer
selectCustomer
},
data() {
return {
@ -591,7 +590,8 @@ export default {
total: 0,
params: {
sitemName: '',
orgPath: ''
useOrgSid: '',
subject: ''
}
},
serviceData: [],
@ -615,7 +615,9 @@ export default {
registerRemarks: '',
billNo: '',
createByName: '',
createBySid: '',
deptName: '',
deptSid: '',
createDate: '',
billTypeKey: '',
billType: '',
@ -675,7 +677,6 @@ export default {
sitemVos: [],
aitemVos: [],
goodsDetailsVos: [],
createBySid: '',
operatorSid: '',
nodeCode: '',
settleVo: {
@ -706,7 +707,7 @@ export default {
subsidyRemarks: '',
rescueRemarks: '',
outRemarks: '',
fileName: '',
fileName: [],
operator: '',
useOrgSid: '',
createOrgSid: ''
@ -859,6 +860,11 @@ export default {
this.group_list = resp.data
}
})
getListByUseOrgSid({ useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }).then((resp) => {
if (resp.success) {
this.claimManufacturer_list = resp.data
}
})
selAllByOrgSidPath({ orgSidPath: window.sessionStorage.getItem('defaultOrgPath') }).then((resp) => {
if (resp.success) {
this.user_list = resp.data
@ -901,7 +907,7 @@ export default {
day: nowDate.getDate()
}
this.formobj.createDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
this.formobj.isGoOut = 0
this.formobj.isGoOut = '0'
this.formobj.nodeCode = '1'
this.formobj.nodeName = '登记'
},
@ -914,23 +920,26 @@ export default {
req.fetchBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.fileName.length > 0) {
this.fileList = this.formobj.fileName
}
}
})
},
selectCustomer() {
this.viewState = 2
this.$refs['divCus'].getList()
this.$refs['divCus'].showData(this.formobj.deptSid, this.formobj.billType)
},
backData(value) {
this.viewState = 1
value = JSON.parse(JSON.stringify(value))
this.formobj.customerName = value.name
this.formobj.customerName = value.customerName
this.formobj.customerSid = value.sid
this.formobj.mobile = value.mobile
this.formobj.vehMark = value.vehMark
this.formobj.vinNo = value.vinNo
this.formobj.customerOrg = value.orgName
this.formobj.vehModel = value.vehModel
this.formobj.customerSource = value.source
},
billTypeChange(value) {
const choose = this.billType_list.filter((item) => item.dictValue === value)
@ -949,9 +958,9 @@ export default {
}
},
changeClaimManufacturer(value) {
const choose = this.claimManufacturer_list.filter((item) => item.claimManufacturer === value)
const choose = this.claimManufacturer_list.filter((item) => item.claiManuName === value)
if (choose.length > 0 && choose !== null) {
this.formobj.claimManufacturerSid = choose[0].claimManufacturerSid
this.formobj.claimManufacturerSid = choose[0].sid
} else {
this.formobj.claimManufacturerSid = ''
}
@ -1061,10 +1070,11 @@ export default {
})
},
serviceInput(value) {
this.serviceQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.serviceQuery.params.useOrgSid = this.formobj.deptSid
this.serviceQuery.params.sitemName = value
this.serviceQuery.params.subject = this.formobj.subject
this.serviceLoading = true
maintenanceitem.listPage(this.serviceQuery).then((response) => {
getServiceItemListPage(this.serviceQuery).then((response) => {
if (response.success) {
this.serviceLoading = false
this.serviceData = response.data.records
@ -1166,11 +1176,20 @@ export default {
},
handleSuccess(resp, file, fileList) {
if (resp.success) {
console.log(resp, file, fileList, 2222)
this.formobj.fileName.push({
name: resp.data.sourceFileName,
url: resp.data.fullUrl
})
}
},
handleRemove(file, fileList) {
console.log(file, fileList, 2222)
if (this.formobj.fileName.length > 0) {
this.formobj.fileName.forEach((e, index) => {
if (e.url === file.url) {
this.formobj.fileName.splice(index, 1)
}
})
}
},
saveOrUpdate() {
this.formobj.operator = window.sessionStorage.getItem('name')
@ -1337,7 +1356,9 @@ export default {
registerRemarks: '',
billNo: '',
createByName: '',
createBySid: '',
deptName: '',
deptSid: '',
createDate: '',
billTypeKey: '',
billType: '',
@ -1397,7 +1418,6 @@ export default {
sitemVos: [],
aitemVos: [],
goodsDetailsVos: [],
createBySid: '',
operatorSid: '',
nodeCode: '',
settleVo: {
@ -1428,11 +1448,13 @@ export default {
subsidyRemarks: '',
rescueRemarks: '',
outRemarks: '',
fileName: '',
fileName: [],
operator: '',
useOrgSid: '',
createOrgSid: ''
}
this.serviceData = []
this.subjoinData = []
this.settleVisible = false
this.submitdisabled = false
this.$emit('doback')

12
yxt-as-ui/src/views/operation/repairbill/repairbillByBeCompleted.vue

@ -398,12 +398,12 @@ export default {
this.getList()
},
toConfirm() {
req.detailsByManHourFee(this.sids).then((res) => {
if (res.success) {
this.dialogVisible = true
this.formobj = res.data
}
})
// req.detailsByManHourFee(this.sids).then((res) => {
// if (res.success) {
// this.dialogVisible = true
// this.formobj = res.data
// }
// })
},
allocationProportionChange(value, row) {
const choose = this.allocationProportion_list.filter((item) => item.dictKey === value)

21
yxt-as-ui/src/views/operation/repairbill/repairbillInfo.vue

@ -4,7 +4,7 @@
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="negativeSettlement()">反结算</el-button>
<el-button type="primary" size="small" v-show="formobj.showReSettleBtn" @click="negativeSettlement()">反结算</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -247,7 +247,11 @@
<el-form-item><span class="addinputInfo">{{ formobj.rescueRemarks }}</span></el-form-item>
</el-col>
<el-col :span="8">
<span></span>
<el-form-item>
<div style="display: flex;flex-direction: column;justify-content:flex-start;align-items: flex-start;">
<el-button type="text" v-for="(item, index) in formobj.fileName" :key="index" @click="handleOpen(item.url)">{{ item.name }}</el-button>
</div>
</el-form-item>
</el-col>
</el-row>
<el-table :key="subjoinKey" :data="formobj.aitemVos" :index="index" border style="width: 100%">
@ -302,7 +306,9 @@ export default {
registerRemarks: '',
billNo: '',
createByName: '',
createBySid: '',
deptName: '',
deptSid: '',
createDate: '',
billTypeKey: '',
billType: '',
@ -362,7 +368,6 @@ export default {
sitemVos: [],
aitemVos: [],
goodsDetailsVos: [],
createBySid: '',
operatorSid: '',
nodeCode: '',
settleVo: {
@ -393,7 +398,7 @@ export default {
subsidyRemarks: '',
rescueRemarks: '',
outRemarks: '',
fileName: '',
fileName: [],
operator: '',
useOrgSid: '',
createOrgSid: ''
@ -493,6 +498,9 @@ export default {
resetState() {
this.viewState = 1
},
handleOpen(value) {
window.open(value, '_blank')
},
negativeSettlement() {
this.viewState = 2
this.$refs['divFJS'].showAdd(this.formobj.sid)
@ -503,7 +511,9 @@ export default {
registerRemarks: '',
billNo: '',
createByName: '',
createBySid: '',
deptName: '',
deptSid: '',
createDate: '',
billTypeKey: '',
billType: '',
@ -563,7 +573,6 @@ export default {
sitemVos: [],
aitemVos: [],
goodsDetailsVos: [],
createBySid: '',
operatorSid: '',
nodeCode: '',
settleVo: {
@ -594,7 +603,7 @@ export default {
subsidyRemarks: '',
rescueRemarks: '',
outRemarks: '',
fileName: '',
fileName: [],
operator: '',
useOrgSid: '',
createOrgSid: ''

17
yxt-as-ui/src/views/operation/salesticket/salesticketAdd.vue

@ -76,12 +76,6 @@
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="发票信息" name="2">
<el-row style="border-top: 1px solid #e0e3eb">
@ -228,7 +222,7 @@
</div>
</div>
<!-- 选择客户 -->
<customer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
<selectCustomer v-show="viewState == 2" ref="divCus" @backData="backData" @doback="resetState"/>
<!-- 结算 -->
<el-dialog :visible.sync="settleVisible" width="70%">
<el-form ref="formobj" :model="formobj" :rules="rules" class="formaddcopy02">
@ -301,12 +295,12 @@
import req from '@/api/operation/salesticket'
import additionitem from '@/api/basicinformation/additionitem'
import { selAllByOrgSidPath, selSubjectInfo, typeValues, listPageSales, getOrgSidByPath } from '@/api/Common/dictcommons'
import customer from '../preregistration/relation/customer'
import selectCustomer from '@/components/publicPage/selectCustomer'
export default {
name: 'SalesTicketAdd',
components: {
customer
selectCustomer
},
data() {
return {
@ -538,17 +532,16 @@ export default {
},
selectCustomer() {
this.viewState = 2
this.$refs['divCus'].getList()
this.$refs['divCus'].showData(this.formobj.deptSid, '')
},
backData(value) {
this.viewState = 1
value = JSON.parse(JSON.stringify(value))
this.formobj.customerName = value.name
this.formobj.customerName = value.customerName
this.formobj.customerSid = value.sid
this.formobj.mobile = value.mobile
this.formobj.vehMark = value.vehMark
this.formobj.vinNo = value.vinNo
this.formobj.customerOrg = value.orgName
},
changeSubject(value) {
const choose = this.subject_list.filter((item) => item.subject === value)

6
yxt-as-ui/src/views/operation/salesticket/salesticketInfo.vue

@ -65,12 +65,6 @@
<el-form-item><span class="addinputInfo">{{ formobj.vehMark }}/{{ formobj.vinNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">客户单位</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerOrg }}</span></el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="发票信息" name="2">
<el-row style="border-top: 1px solid #e0e3eb">

346
yxt-as-ui/src/views/storage/stocktaking/index.vue

@ -9,15 +9,43 @@
</el-button>
<div v-show="isSearchShow" class="search">
<el-form :inline="true" class="tab-header">
<el-form-item label="开始日期">
<el-date-picker v-model="queryParams.params.createDateStart" @change="selectTime1" type="date"
placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;">
</el-date-picker>
<el-form-item label="部门名称">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
</el-form-item>
<el-form-item label="结束日期">
<el-date-picker v-model="queryParams.params.createDateEnd" @change="selectTime2" type="date"
placeholder="选择日期" format="yyyy-MM-dd" value-format="yyyy-MM-dd" style="width: 200px;">
</el-date-picker>
<el-form-item label="盘点编号">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
</el-form-item>
<el-form-item label="生成日期">
<el-date-picker
v-model="queryParams.params.createDateStart"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
style="width: 200px;"
@change="selectTime1"
/>
<el-date-picker
v-model="queryParams.params.createDateEnd"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
style="width: 200px;"
@change="selectTime2"
/>
</el-form-item>
<el-form-item label="盘库状态">
<el-select v-model="queryParams.params.reviewStatus" placeholder="请选择">
<el-option v-for="item in stocktakTypeList" :key="item" :label="item.name" :value="item.name" />
</el-select>
</el-form-item>
<el-form-item label="盘点人">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
</el-form-item>
<el-form-item label="监盘人">
<el-input v-model="queryParams.params.goodsSpuName" placeholder="" clearable />
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
@ -33,34 +61,118 @@
<!-- End 项目列表头部 -->
<!-- Start 项目列表 -->
<div class="">
<el-table v-loading="tableLoading" :data="dataList" border style="width: 100%"
@selection-change="selectionLineChangeHandle">
<el-table
v-loading="tableLoading"
:data="dataList"
border
style="width: 100%"
@selection-change="selectionLineChangeHandle"
>
<el-table-column fixed width="50" type="selection" align="center" />
<el-table-column fixed width="60" label="序号" type="index" :index="indexMethod" align="center" />
<el-table-column prop="billNo" label="单据编号" align="center" />
<el-table-column prop="createDate" label="单据日期" align="center" />
<el-table-column prop="createByName" label="制单人姓名" align="center" />
<el-table-column prop="checkStateName" label="盘点状态" align="center" />
<el-table-column prop="completeDate" label="完成时间" align="center" />
<el-table-column prop="createOrgName" label="门店" align="center" />
<el-table-column prop="profitCount" label="盘盈数量" align="center" />
<el-table-column prop="profitAmount" label="盘盈金额" align="center" />
<el-table-column prop="lossCount" label="盘亏数量" align="center" />
<el-table-column prop="lossAmount" label="盈亏金额" align="center" />
<el-table-column fixed label="操作" align="center" width="220">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">查看</el-button>
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">办理</el-button>
<el-button type="primary" size="mini" @click="toRelevancy(scope.row)">盘库报告</el-button>
</template>
</el-table-column>
<el-table-column prop="billNo" label="流程状态" width="120" align="center" />
<el-table-column prop="billNo" label="部门" width="120" align="center" />
<el-table-column prop="billNo" label="盘点编号" width="120" align="center" />
<el-table-column prop="createDate" label="生成日期" width="120" align="center" />
<el-table-column prop="createByName" label="盘点人" width="120" align="center" />
<el-table-column prop="checkStateName" label="监盘人" width="120" align="center" />
<el-table-column prop="completeDate" label="盘库状态" width="120" align="center" />
<el-table-column label="应盘" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="实盘" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="未盘" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘盈" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘亏" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column label="盘损" align="center">
<el-table-column prop="completeDate" label="数量" align="center" width="100" />
<el-table-column prop="completeDate" label="金额" align="center" width="100" />
</el-table-column>
<el-table-column prop="lossAmount" label="备注" align="center" width="200" />
</el-table>
</div>
<!-- End 项目列表 -->
<div class="pages">
<div class="tit" />
<!-- 翻页 -->
<pagination v-show="dataList.length > 0" :total="queryParams.total" :page.sync="queryParams.current"
:limit.sync="queryParams.size" class="pagination" @pagination="loadList" />
<pagination
v-show="dataList.length > 0"
:total="queryParams.total"
:page.sync="queryParams.current"
:limit.sync="queryParams.size"
class="pagination"
@pagination="loadList"
/>
</div>
</div>
</div>
<!-- End 查询和其列表部分 -->
<!-- 新增修改部分组件 -->
<divAdd v-show="viewState == 2 || viewState == 3" ref="divadd" @doback="resetState" @reloadlist="loadList" />
<el-dialog title="新建盘点单" :visible.sync="dialogVisible" :before-close="handleClose">
<el-form ref="dataForm" class="formaddcopy02" style="margin-top: -40px;" :model="formobj">
<el-row class="first_row">
<el-col :span="6">
<div class="span-sty">盘点人</div>
<el-form-item> <span class="addinputInfo addinputw">审核结果</span></el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">生成日期</div>
<el-form-item> <span class="addinputInfo addinputw">审核结果</span></el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty">监盘人</div>
<el-form-item><el-select
v-model="queryParams.params.reviewStatus"
placeholder="请选择"
class="addinputInfo addinputw"
>
<el-option v-for="item in stocktakTypeList" :key="item" :label="item.name" :value="item.name" />
</el-select></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">备注</div>
<el-form-item><el-input
v-model="formobj.remarks"
placeholder="请填写"
class="addinputInfo addinputw"
clearable
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div style="display: flex;flex-direction: row;width: 100%;justify-content: center;align-items: center;">
<el-button type="primary" style="margin-top: 20px;" @click="saveExamine"> </el-button>
<el-button type="primary" style="margin-top: 20px;" @click="handleClose"> </el-button>
</div>
</el-dialog>
</div>
</template>
@ -79,6 +191,7 @@
},
data() {
return {
dialogVisible: false,
btndisabled: false,
viewState: 1, // 1 2 3 4
isSearchShow: false,
@ -90,14 +203,21 @@
size: 'small',
icon: 'plus',
btnKey: 'toAdd',
btnLabel: '新增'
btnLabel: '生成盘点单'
},
{
type: 'primary',
size: 'small',
icon: 'edit',
btnKey: 'toEdit',
btnLabel: '盘库'
},
{
type: 'primary',
size: 'small',
icon: 'edit',
btnKey: 'toEdit',
btnLabel: '编辑'
btnLabel: '生成盘库报告'
},
{
type: 'info',
@ -112,21 +232,39 @@
size: 10,
total: 0,
params: {
"createDateStart": "",
"createDateEnd": "",
'createDateStart': '',
'createDateEnd': ''
}
},
sids: [],
selectionList: []
selectionList: [],
stocktakTypeList: [{
sid: '1',
name: '未完成'
},
{
sid: '2',
name: '已完成'
}
],
formobj: {}
}
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
created() {
this.loadList()
// this.loadList()
},
methods: {
handleClose() {
this.dialogVisible = false
},
saveExamine() {
this.dialogVisible = false
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
@ -141,9 +279,9 @@
case 'toAdd':
this.toAdd()
break
case 'toEdit':
this.toEdit()
break
case 'toEdit':
this.toEdit()
break
case 'doClose':
this.doClose()
break
@ -175,13 +313,6 @@
var pageindex = index + 1 + pagestart
return pageindex
},
selectTime1() {
},
selectTime2() {
},
dosearch() {
this.queryParams.current = 1
this.loadList()
@ -192,36 +323,37 @@
size: 10,
total: 0,
params: {
"createDateStart": "",
"createDateEnd": "",
'createDateStart': '',
'createDateEnd': ''
}
}
this.loadList()
},
toAdd() {
this.viewState = 2
this.$refs['divadd'].showAdd()
// this.viewState = 2
// this.$refs['divadd'].showAdd()
this.dialogVisible = true
},
selectionLineChangeHandle(val) {
console.log("val", val);
console.log('val', val)
this.selectionList = val
},
toEdit(){
if(this.selectionList.length!=1){
toEdit() {
if (this.selectionList.length != 1) {
this.$message({
type: 'warning',
message: "请选择一条数据。",
message: '请选择一条数据。',
showClose: true
})
return
}
if(this.selectionList[0].checkState==2){
if (this.selectionList[0].checkState == 2) {
this.$message({
type: 'warning',
message: "此记录已完成,不可重复编辑。",
message: '此记录已完成,不可重复编辑。',
showClose: true
})
return
@ -230,33 +362,6 @@
this.viewState = 3
this.$refs['divadd'].showEdit(this.selectionList[0])
},
toBuild() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.exportExcel(this.queryParams.params).then((resp) => {
loading.close()
const blob = new Blob([resp], {
type: 'application/vnd.ms-excel'
})
const fileName = '出入库明细_' + this.queryParams.params.createDateStart + '.xls'
const elink = document.createElement('a')
elink.download = fileName
elink.style.display = 'nonde'
elink.href = URL.createObjectURL(blob)
document.body.appendChild(elink)
elink.click()
URL.revokeObjectURL(elink.href)
document.body.removeChild(elink)
}).catch(() => {
loading.close()
})
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
@ -266,57 +371,54 @@
this.viewState = 3
this.$refs['divadd'].showEdit(row)
},
toRelevancyInfo(row) {
const tip = '请确认是否删除所选品牌?'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.deleteGoods(row.sid).then((resp) => {
loading.close()
if (resp.success) {
this.$message({
type: 'success',
message: resp.msg,
showClose: true
})
this.loadList()
} else {
// resp.code
}
}).catch(e => {
loading.close()
})
}).catch(() => {})
},
resetState() {
this.viewState = 1
},
enableChange(sid, state) {
console.log('sid', sid)
console.log('state', state)
req.updateIsEnable(sid, state).then((resp) => {
if (resp.success) {
this.$message({
type: 'success',
message: '状态已更新',
showClose: true
})
} else { // resp.code
}
}).catch(e => {
console.log(e)
})
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.span-sty {
width: 90px !important;
}
.addinputInfo {
margin-left: 80px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 80px !important;
width: calc(100% - 70px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
/deep/ .el-form-item__error {
margin-left: 180px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .el-radio-group {
display: inline;
line-height: 1px;
vertical-align: middle;
}
</style>

6
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java

@ -127,4 +127,10 @@ public class AsBusrepairBill extends BaseEntity {
private String outRemarks;
@ApiModelProperty("商品登记备注")
private String registerRemarks;
@ApiModelProperty("维修状态(0未维修,1维修中,2维修完成)")
private Integer repairState;
@ApiModelProperty("维修工作状态(0未完成,1已完成)")
private Integer completeState;
@ApiModelProperty("出库确认备注")
private String outboundRemarks;
}

3
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InsuranceVo.java

@ -3,6 +3,7 @@ package com.yxt.anrui.as.api.asbusrepairbill;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
@ -24,5 +25,5 @@ public class InsuranceVo {
@ApiModelProperty("责任比例")
private String responsibilityRatio;
private List<InsuranceRecordVo> insuranceList;
private List<InsuranceRecordVo> insuranceList = new ArrayList<>();
}

36
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairBillQuery.java

@ -0,0 +1,36 @@
package com.yxt.anrui.as.api.asbusrepairinventorybill;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/18 14:34
*/
@Data
public class AsBusrepairBillQuery implements Query {
private String repairState; //维修状态
private String billNo; //工单编号
private String billType; //工单类型
private String subject; //科目
private String customerName; //是否外出
private String vehMark; //车牌号
private String vinNo; //车架号
private String createTimeEnd; //进厂结束日期
private String createTimeStart; //进厂开始日期
private String completeState; //0未完成 1已完成
@ApiModelProperty("使用组织sid")
private String orgPath;
private String userSid;
@ApiModelProperty("菜单url")
private String menuUrl;
}

27
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairBillVo.java

@ -0,0 +1,27 @@
package com.yxt.anrui.as.api.asbusrepairinventorybill;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/18 14:26
*/
@Data
public class AsBusrepairBillVo {
private String repairState; //维修状态
private String billSid; //维修工单sid
private String billNo; //工单编号
private String billTypeValue; //工单类型
private String subjectValue; //科目
private String customerName; //是否外出
private String vehMark; //车牌号
private String vinNo; //车架号
private String isGoOut; //是否外出
private String mobile; //联系电话
private String entryTime; //进厂日期
}

3
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairInventoryBillInit.java

@ -60,7 +60,8 @@ public class AsBusrepairInventoryBillInit {
@ApiModelProperty("客户单位")
private String customerOrg;
private List<SitemsVo> sitemVoList = new ArrayList<>();
@ApiModelProperty("商品登记备注")
private String registerRemarks;
private List<AsBusrepairInventorybillDetailSDto> detailList = new ArrayList<>();
}

16
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/AsBusrepairInventorybillListVo.java

@ -0,0 +1,16 @@
package com.yxt.anrui.as.api.asbusrepairinventorybill;
import com.yxt.common.core.query.Query;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/18 10:19
*/
@Data
public class AsBusrepairInventorybillListVo implements Query {
}

16
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybill/ConfirmDto.java

@ -0,0 +1,16 @@
package com.yxt.anrui.as.api.asbusrepairinventorybill;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/18 16:48
*/
@Data
public class ConfirmDto implements Dto {
private String sid;
private String remarks;
}

3
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybilldetail/AsBusrepairInventorybillDetail.java

@ -60,7 +60,8 @@ public class AsBusrepairInventorybillDetail extends BaseEntity {
private BigDecimal discountAmount;
@ApiModelProperty("金额(销售价-优惠金额)")
private BigDecimal amount;
@ApiModelProperty("库存数量")
private BigDecimal inventoryNum; //
@ApiModelProperty("科目sid")
private String subjectSid;

2
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairinventorybilldetail/AsBusrepairInventorybillDetailSDto.java

@ -71,4 +71,6 @@ public class AsBusrepairInventorybillDetailSDto {
@ApiModelProperty("领料人姓名")
private String operName;
private String remarks;
private String inventoryNum; //库存数量
}

5
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusreservebill/AsBusreserveBill.java

@ -96,5 +96,8 @@ public class AsBusreserveBill extends BaseEntity {
private String deptName; // 制单部门
@ApiModelProperty("客户单位")
private String customerOrg; // 客户单位
@ApiModelProperty("科目sid")
private String subjectSid;
@ApiModelProperty("科目")
private String subject;
}

4
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusreservebill/AsBusreserveBillDetailsVo.java

@ -102,4 +102,8 @@ public class AsBusreserveBillDetailsVo implements Vo {
private List<TrackLogsVo> trackLogs = new ArrayList<>(); // 跟踪记录
@ApiModelProperty("跟踪记录")
private String trackLog;
@ApiModelProperty("科目sid")
private String subjectSid;
@ApiModelProperty("科目")
private String subject;
}

4
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusreservebill/AsBusreserveBillDto.java

@ -102,4 +102,8 @@ public class AsBusreserveBillDto implements Dto {
private List<TrackLogsVo> trackLogs = new ArrayList<>(); // 跟踪记录
@ApiModelProperty("跟踪记录")
private String trackLog;
@ApiModelProperty("科目sid")
private String subjectSid;
@ApiModelProperty("科目")
private String subject;
}

19
yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerCrmVehVo.java

@ -11,14 +11,23 @@ import lombok.Data;
*/
@Data
public class AsCustomerCrmVehVo implements Vo {
@ApiModelProperty("客户sid")
private String customerSid; // 客户sid
@ApiModelProperty("sid")
private String sid; // 客户车辆信息sid
@ApiModelProperty("车牌号")
private String vehMark; // 车牌号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("车型sid")
private String vehModelSid;
@ApiModelProperty("客户类型")
private String customerType; // 车架号
@ApiModelProperty("联系电话")
private String mobile; // 联系电话
@ApiModelProperty("销售公司")
private String salesCompany; // 销售公司
@ApiModelProperty("客户名称")
private String customerName; // 客户名称
@ApiModelProperty("车型")
private String vehModel;
private String vehModel; // 客户名称
@ApiModelProperty("来源")
private String source; // 来源
}

42
yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/AsCustomerVehicleQuery.java

@ -51,39 +51,21 @@ import lombok.Data;
@ApiModel(value = "客户车辆信息 查询条件", description = "客户车辆信息 查询条件")
public class AsCustomerVehicleQuery implements Query {
@ApiModelProperty("客户sid")
private String customerSid; // 客户sid
@ApiModelProperty("客户名称")
private String customerName; // 客户名称
@ApiModelProperty("车牌号")
private String vehMark; // 车牌号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("发动机号")
private String engineNo; // 发动机号
@ApiModelProperty("车型sid")
private String vehModelSid; // 车型sid
@ApiModelProperty("车型")
private String vehModel; // 车型
@ApiModelProperty("行驶里程")
private Integer mileage; // 行驶里程
@ApiModelProperty("上次保养里程")
private Integer lastMileage; // 上次保养里程
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("下次保养日期")
private Date nextMaintainDateStart; // 下次保养日期
private Date nextMaintainDateEnd; // 下次保养日期
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("购车日期")
private Date buyDateStart; // 购车日期
private Date buyDateEnd; // 购车日期
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("商业险到期日期")
private Date commercialInsuranceEndDateStart; // 商业险到期日期
private Date commercialInsuranceEndDateEnd; // 商业险到期日期
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@ApiModelProperty("交强险到期日期")
private Date compulsoryInsuranceEndDateStart; // 交强险到期日期
private Date compulsoryInsuranceEndDateEnd; // 交强险到期日期
@ApiModelProperty("0为内部车,1为外部车")
private Integer vehState; // 0为内部车,1为外部车
@ApiModelProperty("联系电话")
private String mobile; // 联系电话
@ApiModelProperty("客户类型key")
private String customerTypeKey; // 客户类型key
@ApiModelProperty("工单类型")
private String billType; // 0代表保险维修,显示所有客户(不传值也查询所有);
// 1定点维修显示已备案且在有效期内的定点维修客户;
// 2常规维修显示非定点维修客户
@ApiModelProperty("useOrgSid")
private String useOrgSid; // 部门sid
}

185
yxt-as/src/main/java/com/yxt/anrui/as/api/ascustomervehicle/QuickAddCustomer.java

@ -0,0 +1,185 @@
package com.yxt.anrui.as.api.ascustomervehicle;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @author Fan
* @description
* @date 2024/7/19 9:48
*/
@Data
public class QuickAddCustomer implements Dto {
@ApiModelProperty(value = "当前登录用户的sid")
private String userSid;
@ApiModelProperty(value = "客户类型(1个人/2企业)", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerType;
@ApiModelProperty(value = "客户类型key", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerTypeKey;
@ApiModelProperty(value = "见面方式key", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWayKey;
@ApiModelProperty(value = "见面方式(到店/电话/拜访)", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWay;
@ApiModelProperty(value = "客户名称", required = true)
@NotBlank(message = "客户名称为必填项")
private String name;
@ApiModelProperty("联系电话")
@NotBlank(message = "联系电话为必填项")
private String mobile;
@ApiModelProperty("微信号码")
private String weixin;
@ApiModelProperty("公司名称:个人客户时显示")
private String companyName;
@ApiModelProperty("行政区划代码(省)")
private String address_province;
@ApiModelProperty("行政区划代码(市)")
private String address_city;
@ApiModelProperty("行政区划代码(县)")
private String address_county;
@ApiModelProperty("客户地址:省")
private String province;
@ApiModelProperty("客户地址:市")
private String city;
@ApiModelProperty("客户地址:县")
private String county;
@ApiModelProperty("客户地址:详细地址")
private String address;
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)")
private String level;
@ApiModelProperty("客户级别key")
private String levelKey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemindkey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemind;
@ApiModelProperty("提醒日期")
private String remind_day;
@ApiModelProperty("提醒备注")
private String remind_remark;
//更多信息
@ApiModelProperty("客户生日:个人客户时显示")
private String birthday;
@ApiModelProperty("性别:个人客户时显示")
private String sex;
@ApiModelProperty("性别key:个人客户时")
private String sexKey;
@ApiModelProperty("证件类型key")
private String certificateTypeKey;
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)")
private String certificateType;
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("电子邮箱")
private String e_mail;
@ApiModelProperty(value = "联系人")
private String contacts;
@ApiModelProperty("紧急联系人")
private String emergencyContact;
@ApiModelProperty("紧急联系电话")
private String emergencyMobile;
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)")
private String source;
@ApiModelProperty("客户来源key")
private String sourceKey;
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)")
private String customerClass;
@ApiModelProperty("客户分类key")
private String customerClassKey;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty("业务人员sid")
private String staffSid;
private String orgPath;
private String useOrgSid;
private String customerOrgSid;
private String customerOrgName;
//--------------------车辆信息----------------------
private String customerVehSid; // 客户车辆信息sid
@ApiModelProperty("客户sid")
private String customerSid; // 客户sid
@ApiModelProperty("车牌号")
private String vehMark; // 车牌号
@ApiModelProperty("车架号")
private String vinNo; // 车架号
@ApiModelProperty("发动机号")
private String engineNo; // 发动机号
@ApiModelProperty("车型sid")
private String vehModelSid; // 车型sid
@ApiModelProperty("车型")
private String vehModel; // 车型
@ApiModelProperty("行驶里程")
private String mileage; // 行驶里程
@ApiModelProperty("上次保养里程")
private String lastMileage; // 上次保养里程
@ApiModelProperty("下次保养日期")
private String nextMaintainDate; // 下次保养日期
@ApiModelProperty("购车日期")
private String buyDate; // 购车日期
@ApiModelProperty("商业险到期日期")
private String commercialInsuranceEndDate; // 商业险到期日期
@ApiModelProperty("交强险到期日期")
private String compulsoryInsuranceEndDate; // 交强险到期日期
@ApiModelProperty("行驶里程")
private String currentMileage; // 行驶里程
@ApiModelProperty("每月公里")
private String MonthKm; // 每月公里
@ApiModelProperty("滤芯到期公里")
private String filter_km; // 滤芯到期公里
@ApiModelProperty("滤芯到期日期")
private String filter_date; // 滤芯到期日期
@ApiModelProperty("机油到期公里")
private String engineoil_km; // 机油到期公里
@ApiModelProperty("机油到期日期")
private String engineoil_date; // 机油到期日期
@ApiModelProperty("齿轮油到期公里")
private String gearoil_km; // 齿轮油到期公里
@ApiModelProperty("齿轮油到期日期")
private String gearoil_date; // 齿轮油到期日期
@ApiModelProperty("宝轮到期公里")
private String treasurewheel_km; // 宝轮到期公里
@ApiModelProperty("宝轮到期日期")
private String treasurewheel_date; // 宝轮到期日期
@ApiModelProperty("风扇皮带到期公里")
private String fanbelt_km; // 风扇皮带到期公里
@ApiModelProperty("风扇皮带到期日期")
private String fanbelt_date; // 风扇皮带到期日期
@ApiModelProperty("刹车片到期公里")
private String brakepads_km; // 刹车片到期公里
@ApiModelProperty("刹车片到期日期")
private String brakepads_date; // 刹车片到期日期
@ApiModelProperty("车辆备注")
private String carRemarks;
@ApiModelProperty("保养备注")
private String byRemarks;
}

19
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceclaimanu/ServiceClaimanuVo.java

@ -0,0 +1,19 @@
package com.yxt.anrui.as.api.asserviceclaimanu;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/18 9:19
*/
@Data
public class ServiceClaimanuVo {
private String sid;
@ApiModelProperty("索赔厂家名称")
private String claiManuName; // 索赔厂家名称
}

19
yxt-as/src/main/java/com/yxt/anrui/as/api/asserviceitem/AsBusrepairServiceItemQuery.java

@ -0,0 +1,19 @@
package com.yxt.anrui.as.api.asserviceitem;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/18 17:21
*/
@Data
public class AsBusrepairServiceItemQuery implements Query {
private String useOrgSid; // 部门sid
private String subject; // 科目
@ApiModelProperty("项目名称")
private String sitemName;
}

2
yxt-as/src/main/java/com/yxt/anrui/as/api/utils/FileUrlQuery.java

@ -12,5 +12,7 @@ import lombok.Data;
public class FileUrlQuery {
@ApiModelProperty("附件路径")
private String url; // 附件路径
@ApiModelProperty("附件名称")
private String name; // 附件路径
}

7
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillRest.java

@ -54,6 +54,13 @@ public class AsBusrepairBillRest {
return asBusrepairBillService.sureMaterialFee(dto);
}
@PostMapping("/sendBack")
@ApiOperation("退回")
ResultBean<String> sendBack(@RequestBody AsBusrepairBillDto dto) {
return asBusrepairBillService.sendBack(dto);
}
@PostMapping("/settle")
@ApiOperation("结算")
ResultBean<String> settle(@RequestBody AsBusrepairBillDto dto) {

75
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbill/AsBusrepairBillService.java

@ -9,6 +9,7 @@ import com.yxt.anrui.as.api.asappendix.AsAppendix;
import com.yxt.anrui.as.api.asbusrepairbill.*;
import com.yxt.anrui.as.api.asbusrepairbillaitem.AsBusrepairBillAitem;
import com.yxt.anrui.as.api.asbusrepairbillinsurance.AsBusrepairBillInsurance;
import com.yxt.anrui.as.api.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecord;
import com.yxt.anrui.as.api.asbusrepairbillinvoice.AsBusrepairBillInvoice;
import com.yxt.anrui.as.api.asbusrepairbillnode.AsBusrepairBillNode;
import com.yxt.anrui.as.api.asbusrepairbillnode.AsBusrepairBillNodeDto;
@ -26,7 +27,10 @@ import com.yxt.anrui.as.api.utils.domain.AsBillNo;
import com.yxt.anrui.as.biz.asappendix.AsAppendixService;
import com.yxt.anrui.as.biz.asbusclaimbill.AsBusclaimBillService;
import com.yxt.anrui.as.biz.asbusrepairbillaitem.AsBusrepairBillAitemService;
import com.yxt.anrui.as.biz.asbusrepairbillinsurance.AsBusrepairBillInsuranceRest;
import com.yxt.anrui.as.biz.asbusrepairbillinsurance.AsBusrepairBillInsuranceService;
import com.yxt.anrui.as.biz.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecordRest;
import com.yxt.anrui.as.biz.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecordService;
import com.yxt.anrui.as.biz.asbusrepairbillinvoice.AsBusrepairBillInvoiceService;
import com.yxt.anrui.as.biz.asbusrepairbillnode.AsBusrepairBillNodeService;
import com.yxt.anrui.as.biz.asbusrepairbillother.AsBusrepairBillOtherService;
@ -75,6 +79,8 @@ import java.util.*;
@Service
public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMapper, AsBusrepairBill> {
@Autowired
private AsBusrepairBillInsuranceRecordService asBusrepairBillInsuranceRecordService;
@Autowired
private AsAppendixService asAppendixService;
@Autowired
@ -210,6 +216,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
asBusrepairBillSitemService.delByBillSid(sid);
asBusrepairBillSitemRepairerService.delByBillSid(sid);
asBusrepairBillAitemService.delByBillSid(sid);
asBusrepairBillInsuranceRecordService.delByBillSid(sid);
asAppendixService.delByLinkSid(sid);
} else {
AsBusrepairBill asBusrepairBill = new AsBusrepairBill();
@ -277,6 +284,14 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
BeanUtil.copyProperties(dto.getInsuranceVo(), insurance, "id", "sid");
insurance.setBillSid(sid);
asBusrepairBillInsuranceService.insert(insurance);
InsuranceVo insuranceVo = dto.getInsuranceVo();
List<InsuranceRecordVo> insuranceList = insuranceVo.getInsuranceList();
for (InsuranceRecordVo insuranceRecordVo : insuranceList) {
AsBusrepairBillInsuranceRecord record = new AsBusrepairBillInsuranceRecord();
BeanUtil.copyProperties(insuranceRecordVo, record, "id", "sid");
record.setBillSid(sid);
asBusrepairBillInsuranceRecordService.insert(record);
}
}
//送修人信息
if (null != dto.getOtherVo()) {
@ -360,11 +375,20 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
List<FileUrlQuery> fileList = dto.getFileName();
if (!fileList.isEmpty()) {
for (FileUrlQuery query : fileList) {
String name = query.getName();
String filePath = query.getUrl().replace(fileUploadComponent.getUrlPrefix(), "");
AsAppendix asAppendix = new AsAppendix();
asAppendix.setLinkSid(sid);
asAppendix.setAttachType(AsFileEnum.WXGD.getAttachType());
asAppendix.setFilePath(filePath);
if (name.contains(".")) {
// 后缀名
String suffixName = name.substring(name.lastIndexOf(".") + 1);
//2021.10.16 截取文件后缀名以外的名字
String prefixName = name.substring(0, name.indexOf("."));
asAppendix.setFileName(prefixName);
asAppendix.setFileType(suffixName);
}
asAppendixService.save(asAppendix);
}
}
@ -391,6 +415,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
asBusrepairBillSitemRepairerService.delByBillSid(sid);
asBusrepairBillAitemService.delByBillSid(sid);
asBusrepairBillNodeService.delByBillSid(sid);
asBusrepairBillInsuranceRecordService.delByBillSid(sid);
}
return rb.success();
}
@ -436,6 +461,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
}
InvoiceVo invoiceVo = new InvoiceVo(); //发票信息
InsuranceVo insuranceVo = new InsuranceVo();//保险信息
List<InsuranceRecordVo> insuranceList = new ArrayList<>();
OtherVo otherVo = new OtherVo();//送修人信息
List<SitemVo> sitemVos = new ArrayList<>();// 服务项目
List<AitemVo> aitemVos = new ArrayList<>();// 附加项目
@ -448,10 +474,17 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
AsBusrepairBillInsurance insurance = asBusrepairBillInsuranceService.fetchByBillSid(sid);
if (null != insurance) {
BeanUtil.copyProperties(insurance, insuranceVo);
{
vo.setInsuranceVo(insuranceVo);
}
List<AsBusrepairBillInsuranceRecord> insuranceRecord = asBusrepairBillInsuranceRecordService.fetchByBillSid(sid);
if (!insuranceRecord.isEmpty()) {
for (AsBusrepairBillInsuranceRecord record : insuranceRecord) {
InsuranceRecordVo insuranceRecordVo = new InsuranceRecordVo();
BeanUtil.copyProperties(record, insuranceRecordVo);
insuranceList.add(insuranceRecordVo);
}
insuranceVo.setInsuranceList(insuranceList);
}
vo.setInsuranceVo(insuranceVo);
AsBusrepairBillOther other = asBusrepairBillOtherService.fetchByBillSid(sid);
if (null != other) {
BeanUtil.copyProperties(other, otherVo);
@ -533,6 +566,9 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
FileUrlQuery fileUrlQuery = new FileUrlQuery();
String url = fileUploadComponent.getUrlPrefix() + asAppendix.getFilePath();
fileUrlQuery.setUrl(url);
String fileName = asAppendix.getFileName();
String fileType = asAppendix.getFileType();
fileUrlQuery.setName(fileName + "." + fileType);
file.add(fileUrlQuery);
}
}
@ -767,7 +803,7 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
IPage<AsBusrepairPageVo> pagging = baseMapper.pageBillList(page, qw);
for (AsBusrepairPageVo record : pagging.getRecords()) {
String photoss = record.getPhotoss();
if (StringUtils.isNotBlank(photoss)){
if (StringUtils.isNotBlank(photoss)) {
String[] files = photoss.split(",");
List<String> photos = new ArrayList<>();
for (String file : files) {
@ -1059,4 +1095,37 @@ public class AsBusrepairBillService extends MybatisBaseService<AsBusrepairBillMa
PagerVo<AsBillListReturnGoodsVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean<String> sendBack(AsBusrepairBillDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid();
AsBusrepairBill asBusrepairBill = fetchBySid(sid);
Integer nodeCode = null;
String nodeName = "";
if (asBusrepairBill.getNodeCode() == 5 || asBusrepairBill.getNodeCode() == 4) {
nodeCode = 3;
nodeName = "维修";
asBusrepairBill.setCompleteState(0);
asBusrepairBill.setRepairState(1);
} else if (asBusrepairBill.getNodeCode() == 2) {
nodeCode = 1;
nodeName = "登记";
} else if (asBusrepairBill.getNodeCode() == 3) {
nodeCode = 2;
nodeName = "派工";
}
asBusrepairBill.setNodeCode(nodeCode);
asBusrepairBill.setNodeName(nodeName);
asBusrepairBill.setNodeTime(new DateTime());
baseMapper.updateById(asBusrepairBill);
//新增工单环节信息
AsBusrepairBillNode billNode = new AsBusrepairBillNode();
billNode.setBillSid(sid);
billNode.setCreateByName(dto.getOperator());
billNode.setNodeName(nodeName);
billNode.setCreateBySid(dto.getOperatorSid());
billNode.setNodeCode(nodeCode.toString());
asBusrepairBillNodeService.insert(billNode);
return rb.success();
}
}

50
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordMapper.java

@ -0,0 +1,50 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.as.biz.asbusrepairbillinsurancerecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.as.api.asbusrepairbillinsurance.AsBusrepairBillInsurance;
import com.yxt.anrui.as.api.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecord;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Mapper
public interface AsBusrepairBillInsuranceRecordMapper extends BaseMapper<AsBusrepairBillInsuranceRecord> {
@Select("select * from as_busrepair_bill_insurance_record where billSid = #{billSid}")
List<AsBusrepairBillInsuranceRecord> fetchByBillSid(@Param("billSid") String billSid);
@Delete("delete from as_busrepair_bill_insurance_record where billSid = #{sid}")
void delByBillSid(String billSid);
}

6
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordMapper.xml

@ -0,0 +1,6 @@
<?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.as.biz.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecordMapper">
<!-- <where> ${ew.sqlSegment} </where>-->
<!-- ${ew.customSqlSegment} -->
</mapper>

45
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordRest.java

@ -0,0 +1,45 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.as.biz.asbusrepairbillinsurancerecord;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Api(tags = "维修工单-保险信息")
@RestController
@RequestMapping("v1/AsBusrepairBillInsuranceRecord")
public class AsBusrepairBillInsuranceRecordRest {
}

50
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecordService.java

@ -0,0 +1,50 @@
/*********************************************************
*********************************************************
******************** *******************
************* ************
******* _oo0oo_ *******
*** o8888888o ***
* 88" . "88 *
* (| -_- |) *
* 0\ = /0 *
* ___/`---'\___ *
* .' \\| |// '. *
* / \\||| : |||// \ *
* / _||||| -:- |||||- \ *
* | | \\\ - /// | | *
* | \_| ''\---/'' |_/ | *
* \ .-\__ '-' ___/-. / *
* ___'. .' /--.--\ `. .'___ *
* ."" '< `.___\_<|>_/___.' >' "". *
* | | : `- \`.;`\ _ /`;.`/ - ` : | | *
* \ \ `_. \_ __\ /__ _/ .-` / / *
* =====`-.____`.___ \_____/___.-`___.-'===== *
* `=---=' *
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *
*********__佛祖保佑__永无BUG__验收通过__钞票多多__*********
*********************************************************/
package com.yxt.anrui.as.biz.asbusrepairbillinsurancerecord;
import com.yxt.anrui.as.api.asbusrepairbillinsurance.AsBusrepairBillInsurance;
import com.yxt.anrui.as.api.asbusrepairbillinsurancerecord.AsBusrepairBillInsuranceRecord;
import com.yxt.common.base.service.MybatisBaseService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author liupopo
* @version 1.0
* @since 1.0
*/
@Service
public class AsBusrepairBillInsuranceRecordService extends MybatisBaseService<AsBusrepairBillInsuranceRecordMapper, AsBusrepairBillInsuranceRecord> {
public List<AsBusrepairBillInsuranceRecord> fetchByBillSid(String billSid) {
return baseMapper.fetchByBillSid(billSid);
}
public void delByBillSid(String billSid) {
baseMapper.delByBillSid(billSid);
}
}

4
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillMapper.java

@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.as.api.asbusrepairbill.AsBusrepairBill;
import com.yxt.anrui.as.api.asbusrepairinventorybill.AsBusrepairBillVo;
import com.yxt.anrui.as.api.asbusrepairinventorybill.AsBusrepairInventorybill;
import com.yxt.anrui.as.api.asbusrepairinventorybill.AsBusrepairInventorybillVo;
import com.yxt.anrui.as.api.asbusrepairinventorybill.AsBusrepairinventoryExportVo;
@ -35,4 +37,6 @@ public interface AsBusrepairInventorybillMapper extends BaseMapper<AsBusrepairIn
String selOutBoundCountBySitemSid(@Param("sourceBillSid")String sourceBillSid, @Param("busTypeKey")String busTypeKey, @Param("goodsID")String goodsID, @Param("sitemSid")String sitemSid);
List<AsBusrepairinventoryExportVo> exportExcel(@Param(Constants.WRAPPER)QueryWrapper<AsBusrepairInventorybill> qw);
IPage<AsBusrepairBillVo> listPage(IPage<AsBusrepairBill> page, @Param(Constants.WRAPPER) QueryWrapper<AsBusrepairBill> qw);
}

34
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillMapper.xml

@ -66,4 +66,38 @@
</where>
order by a.id desc
</select>
<select id="listPage" resultType="com.yxt.anrui.as.api.asbusrepairinventorybill.AsBusrepairBillVo">
SELECT
CASE
a.repairState
WHEN 0 THEN
'未维修'
WHEN 1 THEN
'维修中'
WHEN 2 THEN
'维修完成'
END AS repairState,
a.sid AS billSid,
a.billNo,
a.billType AS billTypeValue,
a.`subject` AS subjectValue,
a.customerName,
v.vehMark,
v.vinNo,
CASE
a.isGoOut
WHEN 1 THEN
'是'
WHEN 2 THEN
'否'
END AS isGoOut,
a.mobile,
a.entryTime
FROM
as_busrepair_bill AS a
LEFT JOIN as_busrepair_bill_vech AS v ON a.sid = v.billSid
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

14
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillRest.java

@ -36,6 +36,14 @@ public class AsBusrepairInventorybillRest {
return rb.success().setData(pv);
}
@PostMapping("/listPage")
@ApiOperation("维修领料列表")
ResultBean<PagerVo<AsBusrepairBillVo>> listPage(@RequestBody PagerQuery<AsBusrepairBillQuery> pagerQuery) {
ResultBean<PagerVo<AsBusrepairBillVo>> rb = ResultBean.fireFail();
PagerVo<AsBusrepairBillVo> pv = asBusrepairInventorybillService.listPage(pagerQuery);
return rb.success().setData(pv);
}
@PostMapping("/saveOrUpdate")
@ApiOperation("保存或修改")
ResultBean<String> saveorUpdate(@RequestBody AsBusrepairInventorybillDto dto) {
@ -54,6 +62,12 @@ public class AsBusrepairInventorybillRest {
return asBusrepairInventorybillService.newQuitBill(dto);
}
@PostMapping("/saveConfirm")
@ApiOperation("商品出库确认")
ResultBean saveConfirm(@RequestBody ConfirmDto dto) {
return asBusrepairInventorybillService.saveConfirm(dto);
}
@GetMapping("/details")
@ApiOperation("详情")
ResultBean<InventoryBillDetailsVo> details(@RequestParam("sid") String sid) {

126
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusrepairinventorybill/AsBusrepairInventorybillService.java

@ -1,12 +1,15 @@
package com.yxt.anrui.as.biz.asbusrepairinventorybill;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.asbusrepairbill.AsBusrepairBill;
import com.yxt.anrui.as.api.asbusrepairbill.AsBusrepairBillDetailsVo;
import com.yxt.anrui.as.api.asbusrepairbill.SitemVo;
import com.yxt.anrui.as.api.asbusrepairbillnode.AsBusrepairBillNode;
import com.yxt.anrui.as.api.asbusrepairinventorybill.*;
import com.yxt.anrui.as.api.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetail;
import com.yxt.anrui.as.api.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetailSDto;
@ -16,6 +19,7 @@ import com.yxt.anrui.as.api.enums.AsBillTypeEnum;
import com.yxt.anrui.as.api.utils.AsRule;
import com.yxt.anrui.as.api.utils.domain.AsBillNo;
import com.yxt.anrui.as.biz.asbusrepairbill.AsBusrepairBillService;
import com.yxt.anrui.as.biz.asbusrepairbillnode.AsBusrepairBillNodeService;
import com.yxt.anrui.as.biz.asbusrepairinventorybilldetail.AsBusrepairInventorybillDetailService;
import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign;
@ -67,6 +71,9 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
private WmsInventoryFeign wmsInventoryFeign;
@Autowired
private SysUserFeign sysUserFeign;
@Autowired
private AsBusrepairBillNodeService asBusrepairBillNodeService;
/**
* 维修出/退库分页列表
*
@ -399,6 +406,9 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
if (StringUtils.isNotBlank(data.getCustomerOrg())) {
vo.setCustomerOrg(data.getCustomerOrg());
}
if (StringUtils.isNotBlank(data.getRegisterRemarks())) {
vo.setRegisterRemarks(data.getRegisterRemarks());
}
List<SitemVo> sitemVos = data.getSitemVos();
List<SitemsVo> sitemsVos = new ArrayList<>();
if (!sitemVos.isEmpty()) {
@ -428,7 +438,7 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
if (null != goodsDetail.getCount()) {
goodsDetailsVo.setOutboundCount(goodsDetail.getCount().toString());
}
goodsDetailsVo.setCount("");
goodsDetailsVo.setCount("0");
list.add(goodsDetailsVo);
}
vo.setDetailList(list);
@ -446,7 +456,7 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
public ResultBean<String> selOutBoundCountBySitemSid(String sourceBillSid, String busTypeKey, String goodsID, String sitemSid) {
ResultBean rb = ResultBean.fireFail();
String count = baseMapper.selOutBoundCountBySitemSid(sourceBillSid, busTypeKey, goodsID,sitemSid);
String count = baseMapper.selOutBoundCountBySitemSid(sourceBillSid, busTypeKey, goodsID, sitemSid);
return rb.success().setData(count);
}
@ -518,4 +528,116 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep
List<AsBusrepairinventoryExportVo> list = baseMapper.exportExcel(qw);
return list;
}
public PagerVo<AsBusrepairBillVo> listPage(PagerQuery<AsBusrepairBillQuery> pagerQuery) {
AsBusrepairBillQuery query = pagerQuery.getParams();
QueryWrapper<AsBusrepairBill> qw = new QueryWrapper<>();
if (query != null) {
if (StringUtils.isNotBlank(query.getMenuUrl())) {
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("a.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("a.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("a.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("a.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("a.createBySid", query.getUserSid());
} else {
PagerVo<AsBusrepairBillVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<AsBusrepairBillVo> p = new PagerVo<>();
return p;
}
}
//单据编号
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("a.billNo", query.getBillNo());
}
if (StringUtils.isNotBlank(query.getBillType())) {
qw.like("a.billType", query.getBillType());
}
if (StringUtils.isNotBlank(query.getRepairState())) {
if (query.getRepairState().equals("维修中")) {
qw.eq("a.repairState", 1);
} else if (query.getRepairState().equals("维修完成")) {
qw.eq("a.repairState", 2);
}
}
//单据日期开始时间-单据日期结束时间
qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (a.entryTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (a.entryTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')"
);
//维修工单编号
if (StringUtils.isNotBlank(query.getSubject())) {
qw.eq("a.subject", query.getSubject());
}
//业务类型
if (StringUtils.isNotBlank(query.getCustomerName())) {
qw.like("a.customerName", query.getCustomerName());
}
if (StringUtils.isNotBlank(query.getVehMark())) {
qw.like("v.vehMark", query.getVehMark());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("v.vinNo", query.getVinNo());
}
if (query.getCompleteState().equals("0")) {
qw.apply("a.completeState = 0 \n" +
"\t\tAND a.repairState > 0 \n" +
"\tAND (a.SUBJECT = '保外' OR ( a.SUBJECT = '保内' AND (a.oldIsReclaim = 1 OR a.isGoOut = 1)))");
} else if (query.getCompleteState().equals("1")) {
qw.eq("a.completeState", 1);
}
}
IPage<AsBusrepairBill> page = PagerUtil.queryToPage(pagerQuery);
IPage<AsBusrepairBillVo> pagging = baseMapper.listPage(page, qw);
PagerVo<AsBusrepairBillVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean saveConfirm(ConfirmDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid();
AsBusrepairBill asBusrepairBill = asBusrepairBillService.fetchBySid(dto.getSid());
asBusrepairBill.setNodeCode(4);
asBusrepairBill.setNodeName("竣工");
asBusrepairBill.setNodeTime(new DateTime());
asBusrepairBill.setCompleteState(1);
if (StringUtils.isNotBlank(dto.getRemarks())) {
asBusrepairBill.setOutboundRemarks(dto.getRemarks());
}
asBusrepairBillService.updateById(asBusrepairBill);
//新增工单环节信息
AsBusrepairBillNode billNode = new AsBusrepairBillNode();
billNode.setBillSid(sid);
// billNode.setCreateByName(dto.getOperator());
billNode.setNodeName("竣工");
// billNode.setCreateBySid(dto.getOperatorSid());
billNode.setNodeCode("4");
asBusrepairBillNodeService.insert(billNode);
return rb.success();
}
}

7
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusreservebill/AsBusreserveBillService.java

@ -376,6 +376,13 @@ public class AsBusreserveBillService extends MybatisBaseService<AsBusreserveBill
billDto.setOperator(bill.getCreateByName());
billDto.setDeptName(bill.getDeptName());
billDto.setDeptSid(bill.getDeptSid());
billDto.setIsGoOut("2");
if (StringUtils.isNotBlank(bill.getSubject())) {
billDto.setSubject(bill.getSubject());
}
if (StringUtils.isNotBlank(bill.getSubjectSid())) {
billDto.setSubjectSid(bill.getSubjectSid());
}
if (StringUtils.isNotBlank(bill.getCustomerSid())) {
billDto.setCustomerSid(bill.getCustomerSid());
}

3
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.java

@ -26,6 +26,7 @@
package com.yxt.anrui.as.biz.ascustomervehicle;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
@ -69,4 +70,6 @@ public interface AsCustomerVehicleMapper extends BaseMapper<AsCustomerVehicle> {
@Update("update as_customer_vehicle set isDelete = '1' where sid =#{sid}")
void delBySid(@Param("sid") String sid);
IPage<AsCustomerCrmVehVo> customerList(IPage<AsCustomerVehicle> page,@Param(Constants.WRAPPER) QueryWrapper<AsCustomerVehicle> qw);
}

17
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleMapper.xml

@ -24,4 +24,21 @@
WHERE
customerSid = #{sid}
</select>
<select id="customerList" resultType="com.yxt.anrui.as.api.ascustomervehicle.AsCustomerCrmVehVo">
SELECT
v.sid,
v.vehMark,
v.vinNo,
c.`name` AS customerName,
c.customerType,
c.mobile,
s.`name` AS salesCompany,
v.vehModel,
c.source
FROM
as_customer_vehicle AS v
LEFT JOIN anrui_crm.crm_customer_temp AS c ON v.customerSid = c.sid
LEFT JOIN anrui_portal.sys_organization AS s ON c.createOrgSid = s.sid
<where> ${ew.sqlSegment} </where>
</select>
</mapper>

22
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleRest.java

@ -82,6 +82,13 @@ public class AsCustomerVehicleRest{
return rb.success();
}
@ApiOperation("查询数据的列表")
@PostMapping("/customerList")
public ResultBean<PagerVo<AsCustomerCrmVehVo>> customerList(@RequestBody PagerQuery<AsCustomerVehicleQuery> pq){
ResultBean rb = ResultBean.fireFail();
PagerVo<AsCustomerCrmVehVo> pv = asCustomerVehicleService.customerList(pq);
return rb.success().setData(pv);
}
@ApiOperation("根据sid批量删除")
@DeleteMapping("/delBySids")
@ -113,4 +120,19 @@ public class AsCustomerVehicleRest{
public ResultBean saveCustomerVeh(@RequestBody AsCustomerVehicleDetails dto){
return asCustomerVehicleService.saveCustomerVeh(dto);
}
@ApiOperation("快捷新增初始化")
@GetMapping("/quickAddInit")
public ResultBean<QuickAddCustomer> quickAddInit(@RequestParam("sid") String sid){
ResultBean rb = ResultBean.fireFail();
QuickAddCustomer quickAddInit = asCustomerVehicleService.quickAddInit(sid);
return rb.success().setData(quickAddInit);
}
@ApiOperation("快捷新增初保存")
@PostMapping("/quickAddSave")
public ResultBean quickAddSave(@RequestBody QuickAddCustomer dto){
return asCustomerVehicleService.quickAddSave(dto);
}
}

61
yxt-as/src/main/java/com/yxt/anrui/as/biz/ascustomervehicle/AsCustomerVehicleService.java

@ -31,6 +31,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.ascustomervehicle.*;
import com.yxt.anrui.as.api.ascustomervehmaintenance.AsCustomervehMaintenance;
import com.yxt.anrui.as.biz.ascustomervehmaintenance.AsCustomervehMaintenanceService;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempDto;
import com.yxt.anrui.as.feign.crm.CrmCustomerTempFeign;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import com.yxt.common.base.service.MybatisBaseService;
@ -61,6 +63,8 @@ import java.util.List;
public class AsCustomerVehicleService extends MybatisBaseService<AsCustomerVehicleMapper, AsCustomerVehicle> {
@Autowired
private AsCustomervehMaintenanceService asCustomervehMaintenanceService;
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
private QueryWrapper<AsCustomerVehicle> createQueryWrapper(AsCustomerVehicleQuery query) {
// todo: 这里根据具体业务调整查询条件
@ -202,4 +206,61 @@ public class AsCustomerVehicleService extends MybatisBaseService<AsCustomerVehic
}
return rb.success();
}
public PagerVo<AsCustomerCrmVehVo> customerList(PagerQuery<AsCustomerVehicleQuery> pq) {
AsCustomerVehicleQuery query = pq.getParams();
QueryWrapper<AsCustomerVehicle> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getUseOrgSid())) {
qw.eq("c.useOrgSid", query.getUseOrgSid());
}
if (StringUtils.isNotBlank(query.getCustomerName())) {
qw.like("c.name", query.getCustomerName());
}
if (StringUtils.isNotBlank(query.getMobile())) {
qw.like("c.mobile", query.getMobile());
}
if (StringUtils.isNotBlank(query.getCustomerTypeKey())) {
qw.eq("c.customerTypeKey", query.getCustomerTypeKey());
}
if (StringUtils.isNotBlank(query.getBillType())) {
}
if (StringUtils.isNotBlank(query.getVehMark())) {
qw.like("v.vehMark", query.getVehMark());
}
if (StringUtils.isNotBlank(query.getVinNo())) {
qw.like("v.vinNo", query.getVinNo());
}
qw.orderByDesc("v.id");
IPage<AsCustomerVehicle> page = PagerUtil.queryToPage(pq);
IPage<AsCustomerCrmVehVo> pagging = baseMapper.customerList(page, qw);
PagerVo<AsCustomerCrmVehVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public QuickAddCustomer quickAddInit(String sid) {
QuickAddCustomer vo = new QuickAddCustomer();
AsCustomerVehicleDetails vehicleDetails = fetchDetailsVoBySid(sid);
if (null != vehicleDetails) {
BeanUtil.copyProperties(vehicleDetails, vo, "id", "sid", "customerVehSid", "customerSid");
}
return vo;
}
public ResultBean quickAddSave(QuickAddCustomer dto) {
ResultBean rb = ResultBean.fireFail();
CrmCustomerTempDto tempDto = new CrmCustomerTempDto();
BeanUtil.copyProperties(dto, tempDto);
ResultBean save = crmCustomerTempFeign.save(tempDto);
if (save.getSuccess()) {
String sid = (String) save.getData();
dto.setCustomerSid(sid);
AsCustomerVehicleDetails vehicleDetails = new AsCustomerVehicleDetails();
BeanUtil.copyProperties(dto, vehicleDetails);
saveCustomerVeh(vehicleDetails);
} else {
return rb.setMsg(save.getMsg());
}
return rb.success();
}
}

8
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceclaimanu/AsServiceClaimanuMapper.java

@ -29,6 +29,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.as.api.asserviceclaimanu.ServiceClaimanuVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -55,7 +56,7 @@ import java.util.List;
public interface AsServiceClaimanuMapper extends BaseMapper<AsServiceClaimanu> {
IPage<AsServiceClaimanuVo> selectPageVo(IPage<AsServiceClaimanu> page, @Param(Constants.WRAPPER) Wrapper<AsServiceClaimanu> qw);
@Update("update as_service_claimanu set isDelete = '1' where sid = #{sid}")
void updateIsDel(String sid);
@ -67,4 +68,7 @@ public interface AsServiceClaimanuMapper extends BaseMapper<AsServiceClaimanu> {
@Select("select count(*) from as_service_claimanu where claiManuNo = #{claiManuNo} and useOrgSid = #{useOrgSid} and sid != #{dtoSid} and isDelete = '0'")
int checkSidByCodeAndUseOrgSid(@Param("claiManuNo") String claiManuNo,@Param("useOrgSid") String useOrgSid,@Param("dtoSid") String dtoSid);
}
@Select("select * from as_service_claimanu where useOrgSid = #{useOrgSid} and isDelete = '0'")
List<ServiceClaimanuVo> getListByUseOrgSid(@Param("useOrgSid") String useOrgSid);
}

14
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceclaimanu/AsServiceClaimanuRest.java

@ -25,6 +25,7 @@
*********************************************************/
package com.yxt.anrui.as.biz.asserviceclaimanu;
import com.yxt.anrui.as.api.asserviceclaimanu.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -33,10 +34,7 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuQuery;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuVo;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuDetailsVo;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuDto;
import java.util.List;
/**
* Project: yxt-as(索赔厂家管理) <br/>
@ -88,4 +86,12 @@ public class AsServiceClaimanuRest {
AsServiceClaimanuDetailsVo vo = asServiceClaimanuService.fetchDetailsVoBySid(sid);
return rb.success().setData(vo);
}
@ApiOperation("查询本部门索赔厂家")
@GetMapping("/getListByUseOrgSid")
public ResultBean<List<ServiceClaimanuVo>> getListByUseOrgSid(@RequestParam("useOrgSid") String useOrgSid){
ResultBean rb = ResultBean.fireFail();
List<ServiceClaimanuVo> list = asServiceClaimanuService.getListByUseOrgSid(useOrgSid);
return rb.success().setData(list);
}
}

24
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceclaimanu/AsServiceClaimanuService.java

@ -28,6 +28,7 @@ package com.yxt.anrui.as.biz.asserviceclaimanu;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.as.api.asserviceclaimanu.*;
import com.yxt.anrui.as.feign.portal.privilege.PrivilegeQuery;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.as.feign.portal.sysorganization.SysOrganizationVo;
@ -39,11 +40,6 @@ import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanu;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuQuery;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuVo;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuDetailsVo;
import com.yxt.anrui.as.api.asserviceclaimanu.AsServiceClaimanuDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -73,7 +69,7 @@ public class AsServiceClaimanuService extends MybatisBaseService<AsServiceClaima
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private SysUserFeign sysUserFeign;
public PagerVo<AsServiceClaimanuVo> listPageVo(PagerQuery<AsServiceClaimanuQuery> pq) {
AsServiceClaimanuQuery query = pq.getParams();
QueryWrapper<AsServiceClaimanu> qw = new QueryWrapper<>();
@ -126,7 +122,7 @@ public class AsServiceClaimanuService extends MybatisBaseService<AsServiceClaima
PagerVo<AsServiceClaimanuVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
public ResultBean saveOrUpdateDto(AsServiceClaimanuDto dto){
ResultBean rb = ResultBean.fireFail();
String dtoSid = dto.getSid();
@ -171,23 +167,23 @@ public class AsServiceClaimanuService extends MybatisBaseService<AsServiceClaima
this.updateByDto(dto);
return rb.success();
}
public void insertByDto(AsServiceClaimanuDto dto){
AsServiceClaimanu entity = new AsServiceClaimanu();
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.insert(entity);
}
public void updateByDto(AsServiceClaimanuDto dto){
String dtoSid = dto.getSid();
if (StringUtils.isBlank(dtoSid)) {
return;
}
}
AsServiceClaimanu entity = fetchBySid(dtoSid);
BeanUtil.copyProperties(dto, entity, "id", "sid");
baseMapper.updateById(entity);
}
public AsServiceClaimanuDetailsVo fetchDetailsVoBySid(String sid){
AsServiceClaimanu entity = baseMapper.fetchIsDeleteBySid(sid);
AsServiceClaimanuDetailsVo vo = new AsServiceClaimanuDetailsVo();
@ -200,4 +196,8 @@ public class AsServiceClaimanuService extends MybatisBaseService<AsServiceClaima
baseMapper.updateIsDel(sid);
}
}
}
public List<ServiceClaimanuVo> getListByUseOrgSid(String useOrgSid) {
return baseMapper.getListByUseOrgSid(useOrgSid);
}
}

9
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitem/AsServiceItemRest.java

@ -34,6 +34,15 @@ public class AsServiceItemRest {
return rb.success().setData(pv);
}
@ApiOperation("选择本部门维修项目")
@PostMapping("/getServiceItemListPage")
public ResultBean<PagerVo<AsServiceItemVo>> getServiceItemListPage(@RequestBody PagerQuery<AsBusrepairServiceItemQuery> pq) {
ResultBean rb = ResultBean.fireFail();
PagerVo<AsServiceItemVo> pv = asServiceItemService.getServiceItemListPage(pq);
return rb.success().setData(pv);
}
@ApiOperation("禁用")
@PostMapping("/disableState")
public ResultBean disableState(@RequestBody String[] sids) {

19
yxt-as/src/main/java/com/yxt/anrui/as/biz/asserviceitem/AsServiceItemService.java

@ -257,4 +257,23 @@ public class AsServiceItemService extends MybatisBaseService<AsServiceItemMapper
int i = baseMapper.updateIsEnable(list,"1");
return rb.success();
}
public PagerVo<AsServiceItemVo> getServiceItemListPage(PagerQuery<AsBusrepairServiceItemQuery> pq) {
AsBusrepairServiceItemQuery query = pq.getParams();
QueryWrapper<AsServiceItem> qw = new QueryWrapper<>();
if (StringUtils.isNotBlank(query.getSitemName())) {
qw.and(wrapper -> wrapper.like("a.sitemName", query.getSitemName()).or().like("a.sitemCode", query.getSitemName()));
}
if (StringUtils.isNotBlank(query.getSubject())) {
qw.eq("a.subjectName",query.getSubject());
}
qw.eq("a.isDelete", 0);
qw.eq("a.isEnable", 1);
qw.eq("a.state", 2);
qw.orderByAsc("a.sortNo");
IPage<AsServiceItem> page = PagerUtil.queryToPage(pq);
IPage<AsServiceItemVo> pagging = baseMapper.selectPageVo(page, qw);
PagerVo<AsServiceItemVo> p = PagerUtil.pageToVo(pagging, null);
return p;
}
}

146
yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempDto.java

@ -0,0 +1,146 @@
package com.yxt.anrui.as.feign.crm;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List;
/**
* Project: anrui-crm(客户管理) <br/>
* File: CrmCustomerTempDto.java <br/>
* Class: com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempDto <br/>
* Description: 潜在客户信息 数据传输对象. <br/>
* Copyright: Copyright (c) 2011 <br/>
* Company: https://gitee.com/liuzp315 <br/>
* Makedate: 2022-01-12 11:21:16 <br/>
*
* @author liupopo
* @version 1.0
* @since 1.0
*/
@ApiModel(value = "潜在客户信息 数据传输对象", description = "潜在客户信息 数据传输对象")
@Data
public class CrmCustomerTempDto implements Dto {
private static final long serialVersionUID = 793474187074718535L;
@ApiModelProperty(value = "当前登录用户的sid")
private String userSid;
@ApiModelProperty(value = "客户类型(1个人/2企业)", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerType;
@ApiModelProperty(value = "客户类型key", required = true)
@NotBlank(message = "客户类型为必选项")
private String customerTypeKey;
@ApiModelProperty(value = "见面方式key", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWayKey;
@ApiModelProperty(value = "见面方式(到店/电话/拜访)", required = true)
@NotBlank(message = "见面方式为必选项")
private String visitWay;
@ApiModelProperty(value = "客户名称", required = true)
@NotBlank(message = "客户名称为必填项")
private String name;
@ApiModelProperty("联系电话")
@NotBlank(message = "联系电话为必填项")
private String mobile;
@ApiModelProperty("微信号码")
private String weixin;
@ApiModelProperty("公司名称:个人客户时显示")
private String companyName;
@ApiModelProperty("行政区划代码(省)")
private String address_province;
@ApiModelProperty("行政区划代码(市)")
private String address_city;
@ApiModelProperty("行政区划代码(县)")
private String address_county;
@ApiModelProperty("客户地址:省")
private String province;
@ApiModelProperty("客户地址:市")
private String city;
@ApiModelProperty("客户地址:县")
private String county;
@ApiModelProperty("客户地址:详细地址")
private String address;
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)")
private String level;
@ApiModelProperty("客户级别key")
private String levelKey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemindkey;
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemind;
@ApiModelProperty("提醒日期")
private String remind_day;
@ApiModelProperty("提醒备注")
private String remind_remark;
//更多信息
@ApiModelProperty("客户生日:个人客户时显示")
private String birthday;
@ApiModelProperty("性别:个人客户时显示")
private String sex;
@ApiModelProperty("性别key:个人客户时")
private String sexKey;
@ApiModelProperty("证件类型key")
private String certificateTypeKey;
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)")
private String certificateType;
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("电子邮箱")
private String e_mail;
@ApiModelProperty(value = "联系人")
private String contacts;
@ApiModelProperty("紧急联系人")
private String emergencyContact;
@ApiModelProperty("紧急联系电话")
private String emergencyMobile;
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)")
private String source;
@ApiModelProperty("客户来源key")
private String sourceKey;
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)")
private String customerClass;
@ApiModelProperty("客户分类key")
private String customerClassKey;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty("业务人员sid")
private String staffSid;
//运营信息
// @ApiModelProperty(value = "运营信息")
// private CrmBusinessDto crmBusinessDto = new CrmBusinessDto();
// //见证材料集合
// @ApiModelProperty(value = "见证材料的集合,编辑保存时无此字段")
// private List<PcCrmVisitAppendixDto> crmVisitAppendixDtoList = new ArrayList<>();
private String orgPath;
private String useOrgSid;
private String customerOrgSid;
private String customerOrgName;
}

35
yxt-as/src/main/java/com/yxt/anrui/as/feign/crm/CrmCustomerTempFeign.java

@ -0,0 +1,35 @@
package com.yxt.anrui.as.feign.crm;
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.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import javax.validation.Valid;
/**
* @author Fan
* @description
* @date 2024/7/19 10:10
*/
@Api(tags = "潜在客户信息")
@FeignClient(
contextId = "anrui-crm-CrmCustomerTemp",
name = "anrui-crm",
path = "v1/crmcustomertemp"
)
public interface CrmCustomerTempFeign {
/**
* pc端潜在客户新增保存
*
* @param dto 客户信息及运行信息数据传输对象
* @return
*/
@ApiOperation("新增保存")
@PostMapping("/save")
public ResultBean save(@Valid @RequestBody CrmCustomerTempDto dto);
}

5
yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsoutbill/WmsOutBillService.java

@ -48,6 +48,7 @@ public class WmsOutBillService extends MybatisBaseService<WmsOutBillMapper, WmsO
private WmsInventoryRecordService wmsInventoryRecordService;
@Autowired
private AsBusrepairInventorybillFeign asBusrepairInventorybillFeign;
public PagerVo<WmsOutBillVo> listPage(PagerQuery<WmsOutBillQuery> pagerQuery) {
WmsOutBillQuery query = pagerQuery.getParams();
QueryWrapper<WmsOutBill> qw = new QueryWrapper<>();
@ -129,7 +130,7 @@ public class WmsOutBillService extends MybatisBaseService<WmsOutBillMapper, WmsO
qw.like("wi.goodsSpuName", query.getGoodsSpuName());
}
if (StringUtils.isNotBlank(query.getName())) {
qw.like("wi.goodsSpuName", query.getName());
qw.and(wrapper -> wrapper.like("wi.goodsSpuName", query.getName()).or().like("wi.goodsSkuCode", query.getName()));
}
//商品编码
if (StringUtils.isNotBlank(query.getGoodsSkuCode())) {
@ -144,7 +145,7 @@ public class WmsOutBillService extends MybatisBaseService<WmsOutBillMapper, WmsO
qw.like("wi.warehouseRackCode", query.getWarehouseRackCode());
}
if (StringUtils.isNotBlank(query.getUseOrgSid())) {
qw.eq("wi.useOrgSid",query.getUseOrgSid());
qw.eq("wi.useOrgSid", query.getUseOrgSid());
}
qw.apply("wi.count > 0");
//ToDo:供应商

Loading…
Cancel
Save