Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
God 11 months ago
parent
commit
01eff03c3b
  1. 6
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesordervehicle/BusSalesOrderVehicleFeign.java
  2. 7
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesordervehicle/BusSalesOrderVehicleFeignFallback.java
  3. 4
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleMapper.java
  4. 10
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleMapper.xml
  5. 9
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleRest.java
  6. 7
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleService.java
  7. 2
      anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/dingdanInfo.vue
  8. 2
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/dingdanInfo.vue
  9. 2
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdan.vue
  10. 2
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdanByCaiGou.vue
  11. 2
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdanByJinRong.vue
  12. 2
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdanInfo.vue
  13. 2
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/xiaoshoudingdan/xiaoshoudingdanInfo.vue
  14. 2
      anrui-buscenter/anrui-finmanage-ui/src/components/publicPage/salesOrder.vue
  15. 2
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/publicPage/salesOrder.vue
  16. 2
      anrui-riskcenter-ui/src/components/publicPage/salesOrder.vue
  17. 2
      anrui-riskcenter-ui/src/views/workFlow/publicPage/salesOrder.vue
  18. 9
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeign.java
  19. 9
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeignFallback.java
  20. 46
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/historyData/HistoryDataImportVo.java
  21. 16
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/historyData/ReturnMsg.java
  22. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleRest.java
  23. 285
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java
  24. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/returnMoney3.ftl
  25. 2
      anrui-scm/anrui-scm-ui/src/components/publicPage/saleOrder.vue
  26. 2
      anrui-scm/anrui-scm-ui/src/views/workFlow/publicPage/xiaoshoudingdanInfo.vue
  27. 34
      yxt-as-ui/src/api/goods/brand.js
  28. 133
      yxt-as-ui/src/api/goods/category.js
  29. 34
      yxt-as-ui/src/api/goods/factory.js
  30. 32
      yxt-as-ui/src/api/goods/unit.js
  31. 6
      yxt-as-ui/src/views/goods/category/categoryAdd.vue
  32. 62
      yxt-as-ui/src/views/goods/goods/goodsAdd.vue
  33. 651
      yxt-as-ui/src/views/goods/goods/goodsAdd2.vue
  34. 18
      yxt-as-ui/src/views/goods/goods/index.vue
  35. 6
      yxt-as-ui/src/views/purchase/procurement/procurement.vue
  36. 100
      yxt-as-ui/src/views/purchase/procurement/procurementAdd.vue
  37. 16
      yxt-as-ui/src/views/purchase/procurement/procurementInfo.vue
  38. 31
      yxt-as-ui/src/views/purchase/procurement/relation/chooseproducts.vue
  39. 12
      yxt-as-ui/src/views/workFlow/caigouFlow/procurementDaiBan.vue
  40. 96
      yxt-as-ui/src/views/workFlow/caigouFlow/procurementEdit.vue
  41. 12
      yxt-as-ui/src/views/workFlow/caigouFlow/procurementYiBan.vue
  42. 31
      yxt-as-ui/src/views/workFlow/caigouFlow/relation/chooseproducts.vue
  43. 17
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBill.java
  44. 25
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java
  45. 26
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDto.java
  46. 34
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InsuranceRecordVo.java
  47. 32
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InsuranceVo.java
  48. 5
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InvoiceVo.java
  49. 2
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java
  50. 7
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillinsurance/AsBusrepairBillInsurance.java
  51. 40
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecord.java
  52. 5
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillinvoice/AsBusrepairBillInvoice.java
  53. 6
      yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsBrandRest.java
  54. 6
      yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsTypeRest.java
  55. 6
      yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsUnitRest.java
  56. 6
      yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseManufacturerRest.java
  57. 83
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basebrandinfo/BaseBrandInfoService.java
  58. 2
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsDto.java
  59. 3
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsVo.java
  60. 34
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java
  61. 64
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodstype/BaseGoodsTypeService.java
  62. 16
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsunit/BaseGoodsUnitService.java
  63. 62
      yxt-base-biz/src/main/java/com/yxt/base/biz/base/basemanufacturer/BaseManufacturerService.java
  64. 3
      工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划3.docx

6
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesordervehicle/BusSalesOrderVehicleFeign.java

@ -171,4 +171,8 @@ public interface BusSalesOrderVehicleFeign {
@ApiOperation("根据车辆sid查询最新一条不为终止的销售订单")
@PostMapping("/selectOneByVehSidAndNotStop")
ResultBean<String> selectOneByVehSidAndNotStop(@RequestParam("vehSid") String vehSid);
}
@ApiOperation("根据订单sid车架号查询")
@GetMapping("/selByOrderSidAndVinNo")
ResultBean<BusSalesOrderVehicle> selByOrderSidAndVinNo(@RequestParam("salesOrderSid")String salesOrderSid, @RequestParam("vinNo")String vinNo);
}

7
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesordervehicle/BusSalesOrderVehicleFeignFallback.java

@ -168,4 +168,9 @@ public class BusSalesOrderVehicleFeignFallback implements BusSalesOrderVehicleFe
return null;
}
}
@Override
public ResultBean<BusSalesOrderVehicle> selByOrderSidAndVinNo(String salesOrderSid, String vinNo) {
return null;
}
}

4
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleMapper.java

@ -183,4 +183,6 @@ public interface BusSalesOrderVehicleMapper extends BaseMapper<BusSalesOrderVehi
List<String> selectBySalesOrderSid2(String saleOrderSid);
String selectOneByVehSidAndNotStop(String vehSid);
}
BusSalesOrderVehicle selByOrderSidAndVinNo(@Param("salesOrderSid") String salesOrderSid, @Param("vinNo") String vinNo);
}

10
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleMapper.xml

@ -364,4 +364,12 @@
ORDER BY bv.`createTime` DESC
LIMIT 1
</select>
</mapper>
<select id="selByOrderSidAndVinNo"
resultType="com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle">
SELECT
*
FROM bus_sales_order_vehicle bv
where bv.`salesOrderSid` = #{salesOrderSid} and
bv.linkNo LIKE CONCAT( '%', #{vinNo}, '%' )
</select>
</mapper>

9
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleRest.java

@ -192,4 +192,11 @@ public class BusSalesOrderVehicleRest implements BusSalesOrderVehicleFeign {
String orderSid = busSalesOrderVehicleService.selectOneByVehSidAndNotStop(vehSid);
return rb.success().setData(orderSid);
}
}
@Override
public ResultBean<BusSalesOrderVehicle> selByOrderSidAndVinNo(String salesOrderSid, String vinNo) {
ResultBean rb = ResultBean.fireFail();
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleService.selByOrderSidAndVinNo(salesOrderSid,vinNo);
return rb.success().setData(busSalesOrderVehicle);
}
}

7
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordervehicle/BusSalesOrderVehicleService.java

@ -667,4 +667,9 @@ public class BusSalesOrderVehicleService extends MybatisBaseService<BusSalesOrde
public String selectOneByVehSidAndNotStop(String vehSid) {
return baseMapper.selectOneByVehSidAndNotStop(vehSid);
}
}
public BusSalesOrderVehicle selByOrderSidAndVinNo(String salesOrderSid, String vinNo) {
String substringVinNo = vinNo.substring(vinNo.length() - 8);
return baseMapper.selByOrderSidAndVinNo(salesOrderSid,substringVinNo);
}
}

2
anrui-buscenter/anrui-buscenter-ui/src/components/publicPage/dingdanInfo.vue

@ -149,7 +149,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/publicPage/dingdanInfo.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdan.vue

@ -150,7 +150,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdanByCaiGou.vue

@ -150,7 +150,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdanByJinRong.vue

@ -150,7 +150,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/xiaoshouguanliFlow/xiaoshoudingdanFlow/xiaoshoudingdanInfo.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/xiaoshoudingdan/xiaoshoudingdanInfo.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-finmanage-ui/src/components/publicPage/salesOrder.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/publicPage/salesOrder.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-riskcenter-ui/src/components/publicPage/salesOrder.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-riskcenter-ui/src/views/workFlow/publicPage/salesOrder.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

9
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeign.java

@ -10,7 +10,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@ -80,6 +84,11 @@ public interface LoanRepaymentScheduleFeign {
@ResponseBody
ResultBean<List<LoanRepaymentHistory>> selHistoryBySid(@RequestParam("sid") String sid);
@ApiOperation(value = "导入贷后历史数据")
@PostMapping("/importHistoryData")
public ResultBean importHistoryData(
@RequestParam(value = "file") MultipartFile file, HttpServletRequest request) throws IOException;
//-------------------------app接口--------------------
/**

9
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/LoanRepaymentScheduleFeignFallback.java

@ -7,7 +7,11 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
/**
@ -69,6 +73,11 @@ public class LoanRepaymentScheduleFeignFallback implements LoanRepaymentSchedule
return null;
}
@Override
public ResultBean importHistoryData(MultipartFile file, HttpServletRequest request) throws IOException {
return null;
}
@Override
public ResultBean<PagerVo<AppRepaymentPlanVo>> getRepaymentPlanList(PagerQuery<AppRepaymentPlanQuery> pq) {
return null;

46
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/historyData/HistoryDataImportVo.java

@ -26,45 +26,59 @@ public class HistoryDataImportVo {
private String vinNo;
@ApiModelProperty("消贷合同编号")
private String loanContractNo;
@ApiModelProperty("资方合同号")
@ApiModelProperty("是否存在休眠或展期")
private String sleep;
@ApiModelProperty("主产品资方合同号")
private String bankContractNo;
@ApiModelProperty("资方名称")
@ApiModelProperty("主产品资方名称")
private String bankName;
@ApiModelProperty("主产品期数")
private String mainPeriod;
@ApiModelProperty("金融产品政策")
@ApiModelProperty("金融产品首付比例")
private String paymentRatio;
@ApiModelProperty("金融产品保证金比例")
private String depositRatio;
@ApiModelProperty("实收保证金金额")
private String depositMoney;
@ApiModelProperty("其他融资方合同号")
private String otherBankNo;
@ApiModelProperty("其他融资方")
@ApiModelProperty("其他融资方名称")
private String otherBankName;
@ApiModelProperty("其他融期数")
private String otherPeriod;
@ApiModelProperty("主产品首期还日")
@ApiModelProperty("主产品首期还日")
private String mainRepayDate;
@ApiModelProperty("主产品首期月还")
@ApiModelProperty("主产品第一期应还金额")
private String mainFirstRepay;
@ApiModelProperty("主产品期间月还")
@ApiModelProperty("主产品中间期")
private String mainMidRepay;
@ApiModelProperty("主产品期末月还")
@ApiModelProperty("主产品最后一期应还金额")
private String mainLastRepay;
@ApiModelProperty("其他融首期还日")
@ApiModelProperty("其他融首期还日")
private String otherRepayDate;
@ApiModelProperty("其他融首期月还")
@ApiModelProperty("其他融第一期应还金额")
private String otherFirstRepay;
@ApiModelProperty("其他融期间月还")
@ApiModelProperty("其他融中间期")
private String otherMidRepay;
@ApiModelProperty("其他融期末月还")
@ApiModelProperty("其他融最后一期应还金额")
private String otherLastRepay;
@ApiModelProperty("推送财务凭证部门编码")
private String cwDeptNo;
@ApiModelProperty("首期总月还")
private String mainAmount;
@ApiModelProperty("销售部门编码")
private String salesDeptNo;
@ApiModelProperty("销售部门")
private String salesDept;
@ApiModelProperty("分公司编码")
private String useOrgNo;
@ApiModelProperty("分公司垫款金额")
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("累欠本金(逾期月还)")
private String tiredMoney;
@ApiModelProperty("其中公司垫还资方金额")
private String paymentMoney;
@ApiModelProperty("资金占用费")
@ApiModelProperty("垫还资方逾期利息")
private String interest;
@ApiModelProperty("资金占用费(逾期利息)")
private String fund;
}

16
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanrepaymentschedule/historyData/ReturnMsg.java

@ -0,0 +1,16 @@
package com.yxt.anrui.riskcenter.api.loanrepaymentschedule.historyData;
import lombok.Data;
import java.util.*;
/**
* @author Fan
* @description
* @date 2024/6/28 14:13
*/
@Data
public class ReturnMsg {
private Set<String> setMsg;
private List<HistoryDataImportVo> list;
}

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleRest.java

@ -13,8 +13,11 @@ import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
@ -85,6 +88,11 @@ public class LoanRepaymentScheduleRest implements LoanRepaymentScheduleFeign {
return loanRepaymentScheduleService.selHistoryBySid(sid);
}
@Override
public ResultBean importHistoryData(MultipartFile file, HttpServletRequest request) throws IOException {
return loanRepaymentScheduleService.importHistoryData(file,request);
}
@Override
public ResultBean<PagerVo<AppRepaymentPlanVo>> getRepaymentPlanList(PagerQuery<AppRepaymentPlanQuery> pq) {
ResultBean<PagerVo<AppRepaymentPlanVo>> rb = ResultBean.fireFail();

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

@ -1,6 +1,7 @@
package com.yxt.anrui.riskcenter.biz.loanrepaymentschedule;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -39,6 +40,7 @@ import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDe
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetailsDto;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.*;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.historyData.HistoryDataImportVo;
import com.yxt.anrui.riskcenter.api.loanrepaymentschedule.historyData.ReturnMsg;
import com.yxt.anrui.riskcenter.api.loansolutions.LoanSolutions;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.anrui.riskcenter.api.loansolutionsotherpolicy.LoanSolutionsOtherpolicy;
@ -62,11 +64,20 @@ import com.yxt.common.core.vo.PagerVo;
import com.yxt.messagecenter.api.message.MessageFeign;
import com.yxt.messagecenter.api.message.PushMessageQuery;
import com.yxt.messagecenter.api.message.PushSmsDto;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
@ -75,6 +86,8 @@ import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@ -2653,6 +2666,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
List<BusSalesOrderVehicle> vehicles = busSalesOrderVehicleFeign.selectListByOrderSidAndXdConSid(salesOrderSid, loanContractSid).getData();
String isOtherPolicy = schedule.getIsOtherPolicy();
String sameBank = schedule.getSameBank();
String isDifferent = schedule.getIsDifferent(); // 是否有单独车辆不同
String mainOrOther = "";
if (null != salesOrder) {
if (!vehicles.isEmpty()) {
@ -2907,6 +2921,9 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
}
}
}
System.out.println("------------------------");
System.out.println(pdfs);
System.out.println("------------------------");
return pdfs;
}
@ -4874,7 +4891,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
/**
* 导入历史数据生成还款计划表
*/
public void saveHistoryRecord(List<HistoryDataImportVo> list) {
public List<LoanRepaymentPlanDetails> saveHistoryRecord(List<HistoryDataImportVo> list) {
List<LoanRepaymentSchedule> schedules = new ArrayList<>(); //还款计划表主表
List<LoanRepaymentPlanDetails> planDetails = new ArrayList<>();//还款计划表明细
List<LoanRepaymentHistory> histories = new ArrayList<>();//还款记录
@ -4911,7 +4928,8 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
String salesOrderSid = "";
String loanContractSid = "";
String borrowerSid = "";
String[] splitVin = v.getVinNo().split(",");
String vinNo = v.getVinNo();
String busVinSid = "";
if (StringUtils.isNotBlank(v.getOtherBankNo())) {
isOther = "1";
if (v.getBankContractNo().equals(v.getOtherBankNo())) {
@ -4975,15 +4993,276 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
customerTemps.add(crmCustomerTemp);
}
//根据车架号查询销售订单
String orderSid = baseVehicleOutApplyFeign.selectSidByVinNo(splitVin[0]).getData();
String orderSid = baseVehicleOutApplyFeign.selectSidByVinNo(vinNo).getData();
if (StringUtils.isNotBlank(orderSid)) {
salesOrderSid = orderSid;
// 查询销售订单车辆列表
ResultBean<BusSalesOrderVehicle> busSalesOrderVehicle = busSalesOrderVehicleFeign.selByOrderSidAndVinNo(salesOrderSid,vinNo);
BusSalesOrderVehicle vehicleData = busSalesOrderVehicle.getData();
if (vehicleData != null) {
busVinSid = vehicleData.getSid();
loanContractSid = vehicleData.getLoanContractSid();
borrowerSid = vehicleData.getBorrowerSid();
}
} else {
}
}
return planDetails;
}
public ResultBean importHistoryData(MultipartFile file, HttpServletRequest request) {
ResultBean rb = ResultBean.fireFail();
try {
String temp = request.getSession().getServletContext().getRealPath(File.separator) + "temp";// 临时目录
File tempFile = new File(temp);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
String fileName = file.getOriginalFilename();
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
return rb.fail().setMsg("上传文件不正确");
}
boolean isExcel2003 = true;
if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
isExcel2003 = false;
}
InputStream is = file.getInputStream();
Workbook wb = null;
if (isExcel2003) {
wb = new HSSFWorkbook(is);
} else {
wb = new XSSFWorkbook(is);
}
Sheet sheet = wb.getSheetAt(0);
ReturnMsg returnMsg = getSheetVal(sheet);
Set<String> setMsg = returnMsg.getSetMsg();
StringBuffer sbMsg = new StringBuffer();
if (null != setMsg && setMsg.size() > 0) {
for (String s : setMsg) {
sbMsg.append(s).append(",");
}
sbMsg.delete(sbMsg.length() - 1, sbMsg.length());
if (StringUtils.isNotBlank(sbMsg.toString())) {
return rb.setMsg(sbMsg.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return rb.success();
}
private ReturnMsg getSheetVal(Sheet sheet) {
ReturnMsg returnMsg = new ReturnMsg();
List<HistoryDataImportVo> voList = new ArrayList<>();
Set<String> setMsg = new HashSet<>();
Row row1 = sheet.getRow(0);
Map<Integer, String> header = new HashMap<>();
Map<String, String> map = new HashMap<>();
for (int i = 0; i < row1.getPhysicalNumberOfCells(); i++) {
String trim = new String();
try {
trim = getCellVal(row1.getCell(i)).toString().trim();
String temp = getCellVal(row1.getCell(i)).toString().trim();
if (StringUtils.isNotBlank(temp)) {
header.put(i, temp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
for (int r = 1; r <= sheet.getLastRowNum(); r++) {
HistoryDataImportVo info = new HistoryDataImportVo();
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
for (int i = 0; i < header.size(); i++) {
// String trim = new String();
try {
// trim = getCellVal(row.getCell(i)).toString().trim();
String temp = "";
if (null != getCellVal(row.getCell(i))) {
temp = getCellVal(row.getCell(i)).toString().trim();
}
String head = header.get(i);
String field = "";
if (StringUtils.isNotBlank(temp)) {
field = temp;
}
if (head.equals("实际购车人名称")) {
info.setActualName(field);
}
if (head.equals("实际购车人电话")) {
info.setActualPhone(field);
}
if (head.equals("借款人(财务的客户)编码")) {
info.setBorrowerNo(field);
}
if (head.equals("借款人(财务的客户)名称")) {
info.setBorrowerName(field);
}
if (head.equals("车架号")) {
info.setVinNo(field);
}
if (head.equals("消贷合同编号")) {
info.setLoanContractNo(field);
}
if (head.equals("是否存在休眠或展期")) {
info.setSleep(field);
}
if (head.equals("主产品资方合同号")) {
info.setBankContractNo(field);
}
if (head.equals("主产品资方名称")) {
info.setBankName(field);
}
if (head.equals("主产品期数")) {
info.setMainPeriod(field);
}
if (head.equals("金融产品首付比例")) {
info.setPaymentRatio(field);
}
if (head.equals("金融产品保证金比例")) {
info.setDepositRatio(field);
}
if (head.equals("实收保证金金额")) {
info.setDepositMoney(field);
}
if (head.equals("其他融资方合同号")) {
info.setOtherBankNo(field);
}
if (head.equals("其他融资方名称")) {
info.setOtherBankName(field);
}
if (head.equals("其他融期数")) {
info.setOtherPeriod(field);
}
if (head.equals("主产品首期应还日期")) {
info.setMainRepayDate(field);
}
if (head.equals("主产品第一期应还金额")) {
info.setMainFirstRepay(field);
}
if (head.equals("主产品中间期")) {
info.setMainMidRepay(field);
}
if (head.equals("主产品最后一期应还金额")) {
info.setMainLastRepay(field);
}
if (head.equals("其他融首期应还日期")) {
info.setOtherRepayDate(field);
}
if (head.equals("其他融第一期应还金额")) {
info.setOtherFirstRepay(field);
}
if (head.equals("其他融中间期")) {
info.setOtherMidRepay(field);
}
if (head.equals("其他融最后一期应还金额")) {
info.setOtherLastRepay(field);
}
if (head.equals("首期总月还")) {
info.setMainAmount(field);
}
if (head.equals("销售部门编码")) {
info.setSalesDeptNo(field);
}
if (head.equals("销售部门")) {
info.setSalesDept(field);
}
if (head.equals("分公司编码")) {
info.setUseOrgNo(field);
}
if (head.equals("分公司")) {
info.setUseOrgName(field);
}
if (head.equals("累欠本金(逾期月还)")) {
info.setTiredMoney(field);
}
if (head.equals("其中公司垫还资方金额")) {
info.setPaymentMoney(field);
}
if (head.equals("垫还资方逾期利息")) {
info.setInterest(field);
}
if (head.equals("资金占用费(逾期利息)")) {
info.setFund(field);
}
} catch (Exception e) {
e.printStackTrace();
continue;
}
}
voList.add(info);
}
returnMsg.setList(voList);
return returnMsg;
}
public Object getCellVal(Cell cell) {
Object obj = null;
if (cell != null) {
switch (cell.getCellTypeEnum()) {
case BOOLEAN:
obj = cell.getBooleanCellValue();
break;
case ERROR:
obj = cell.getErrorCellValue();
break;
case NUMERIC:
obj = cell.getNumericCellValue();
break;
case STRING:
obj = cell.getStringCellValue();
break;
default:
break;
}
}
return obj;
}
public boolean isNum(String s) {
if (org.apache.commons.lang3.StringUtils.isNotBlank(s)) {
if (s.contains(".")) {
return isNumeric(s);
} else {
return isNumericFirst(s);
}
}
return false;
}
public boolean isNumeric(String s) {
String substring = s.substring(0, s.lastIndexOf("."));
String substringLast = s.substring(s.lastIndexOf(".") + 1, s.length());
if (substring != null && !"".equals(substring.trim()) || substringLast != null && !"".equals(substringLast.trim())) {
boolean matches = substring.matches("^[0-9]*$");
boolean b = substringLast.matches("^[0-9]*$");
if (matches && b) {
return true;
} else {
return false;
}
} else
return false;
}
public boolean isNumericFirst(String str) {
Pattern pattern = Pattern.compile("[0-9]*");
System.out.println(str);
Matcher isNum = pattern.matcher(str);
if (!isNum.matches()) {
return false;
}
return true;
}
}

4
anrui-riskcenter/anrui-riskcenter-biz/src/main/resources/ftl/vouchers/returnMoney3.ftl

@ -7574,7 +7574,7 @@
<w:u w:val="none"/>
<w:lang w:val="EN-US" w:fareast="ZH-CN"/>
</w:rPr>
<w:t>${fMoney2!}</w:t>
<w:t>${fMoney3!}</w:t>
</w:r>
</w:p>
</w:tc>
@ -8226,4 +8226,4 @@
<w:docGrid w:type="lines" w:line-pitch="312"/>
</w:sectPr>
</wx:sect>
</w:body></w:wordDocument>
</w:body></w:wordDocument>

2
anrui-scm/anrui-scm-ui/src/components/publicPage/saleOrder.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

2
anrui-scm/anrui-scm-ui/src/views/workFlow/publicPage/xiaoshoudingdanInfo.vue

@ -146,7 +146,7 @@
</el-col>
<el-col :span="6">
<div class="span-sty">其中上装()</div>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderModel.topPrice }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.busSalesOrderMakeup.topPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>

34
yxt-as-ui/src/api/goods/brand.js

@ -1,7 +1,6 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(params) {
return request({
@ -13,28 +12,20 @@ export default {
}
})
},
// 品牌查询
getAllBrand: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsbrand/listAll',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
method: 'get',
params: params
})
},
// 修改是否可用状态
updateIsEnable: function(sid,isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsbrand/updateIsEnable/'+sid+"/"+isEnable
});
updateIsEnable: function(sid, isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsbrand/updateIsEnable/' + sid + '/' + isEnable
})
},
// 新增、保存
saveBrands: function(data) {
return request({
@ -44,19 +35,15 @@ export default {
headers: {
'Content-Type': 'application/json'
}
});
})
},
// 初始化
initBrands: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsbrand/initialization/' + data,
method: 'get'
});
})
},
// 品牌-- 删除
deleteBySids: function(data) {
return request({
@ -67,8 +54,5 @@ export default {
'Content-Type': 'application/json'
}
})
},
}
}

133
yxt-as-ui/src/api/goods/category.js

@ -1,78 +1,65 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/listPage',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 类别查询
getAllType: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/listAll',
method: 'get',
params: params
})
},
// 修改是否可用状态
updateIsEnable: function(sid, isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/updateIsEnable/' + sid + '/' + isEnable
})
},
// 修改是否一品一码
updateIsGoodsID: function(sid, isGoodsID) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/updateIsGoodsID/' + sid + '/' + isGoodsID
})
},
// 新增、保存
saveTypes: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/saveOrUpdate',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
},
// 查询分页列表
listPage: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/listPage',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 类别查询
getAllType: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/listAll',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
})
},
// 修改是否可用状态
updateIsEnable: function(sid, isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/updateIsEnable/' + sid + "/" + isEnable
});
},
// 修改是否一品一码
updateIsGoodsID: function(sid, isGoodsID) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/updateIsGoodsID/' + sid + "/" + isGoodsID
});
},
// 新增、保存
saveTypes: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/saveOrUpdate',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
});
},
// 初始化
initTypes: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/initialization/' + data,
method: 'get'
});
},
// 类别-- 删除
deleteBySids: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/delBySids',
method: 'DELETE',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
},
// 初始化
initTypes: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/initialization/' + data,
method: 'get'
})
},
// 类别-- 删除
deleteBySids: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodstype/delBySids',
method: 'DELETE',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
}

34
yxt-as-ui/src/api/goods/factory.js

@ -1,7 +1,6 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(params) {
return request({
@ -13,27 +12,20 @@ export default {
}
})
},
// 厂家查询
// 厂家查询
getAllFacturer: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basemanufacturer/listAll',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
method: 'get',
params: params
})
},
// 修改是否可用状态
updateIsEnable: function(sid,isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basemanufacturer/updateIsEnable/'+sid+"/"+isEnable
});
updateIsEnable: function(sid, isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basemanufacturer/updateIsEnable/' + sid + '/' + isEnable
})
},
// 新增、保存
saveFacturer: function(data) {
return request({
@ -43,18 +35,16 @@ export default {
headers: {
'Content-Type': 'application/json'
}
});
})
},
// 初始化
initFacturer: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basemanufacturer/initialization/' + data,
method: 'get'
});
})
},
// 厂家-- 删除
// 厂家-- 删除
deleteBySids: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basemanufacturer/delBySids',
@ -64,7 +54,5 @@ export default {
'Content-Type': 'application/json'
}
})
},
}
}

32
yxt-as-ui/src/api/goods/unit.js

@ -1,7 +1,6 @@
import request from '@/utils/request'
export default {
// 查询分页列表
listPage: function(params) {
return request({
@ -13,28 +12,20 @@ export default {
}
})
},
// 单位查询
getAllUnit: function(params) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsunit/listAll',
method: 'post',
data: params,
headers: {
'Content-Type': 'application/json'
}
method: 'get',
params: params
})
},
// 修改是否可用状态
updateIsEnable: function(sid,isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsunit/updateIsEnable/'+sid+"/"+isEnable
});
updateIsEnable: function(sid, isEnable) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsunit/updateIsEnable/' + sid + '/' + isEnable
})
},
// 新增、保存
saveUnits: function(data) {
return request({
@ -44,18 +35,16 @@ export default {
headers: {
'Content-Type': 'application/json'
}
});
})
},
// 初始化
initUnits: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsunit/initialization/' + data,
method: 'get'
});
})
},
// 单位-- 删除
// 单位-- 删除
deleteBySids: function(data) {
return request({
url: '/yxtbase/apiadmin/base/basegoodsunit/delBySids',
@ -65,6 +54,5 @@ export default {
'Content-Type': 'application/json'
}
})
},
}
}

6
yxt-as-ui/src/views/goods/category/categoryAdd.vue

@ -211,11 +211,7 @@
methods: {
initData() {
console.log('>>>>>>>>>initData')
var parpams = {
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
userSid: window.sessionStorage.getItem('userSid'),
menuUrl: this.$route.path
}
var parpams = { useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }
req.getAllType(parpams).then(resp => {
this.goodsTypeList = resp.data

62
yxt-as-ui/src/views/goods/goods/goodsAdd.vue

@ -135,7 +135,7 @@
<el-col :span="12">
<div class="span-sty">是否上架</div>
<el-form-item>
<el-radio-group v-model="formobj.isListed" size="small" style="margin-left: 120px;">
<el-radio-group v-model="formobj.isListed" size="small" style="margin-left: 120px;">
<el-radio :label="'1'">上架</el-radio>
<el-radio :label="'2'">下架</el-radio>
</el-radio-group>
@ -373,7 +373,8 @@
<el-col :span="8">
<div class="span-sty">是否原厂</div>
<el-form-item>
<el-radio-group v-model="itemInfo.isOriginalFactory" :disabled="true" size="small" style="margin-left: 120px;">
<el-radio-group v-model="itemInfo.isOriginalFactory" :disabled="true" size="small"
style="margin-left: 120px;">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
@ -387,7 +388,8 @@
<el-col :span="8">
<div class="span-sty">是否库存警戒</div>
<el-form-item>
<el-radio-group v-model="itemInfo.isInventoryAlert" :disabled="true" size="small" style="margin-left: 120px;">
<el-radio-group v-model="itemInfo.isInventoryAlert" :disabled="true" size="small"
style="margin-left: 120px;">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
@ -473,7 +475,8 @@
<el-col :span="8">
<div class="span-sty">是否积分兑换</div>
<el-form-item>
<el-radio-group v-model="itemInfo.isIntegralExchange" :disabled="true" size="small" style="margin-left: 120px;">
<el-radio-group v-model="itemInfo.isIntegralExchange" :disabled="true" size="small"
style="margin-left: 120px;">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
@ -494,7 +497,8 @@
<el-col :span="8">
<div class="span-sty">锁定销售价格</div>
<el-form-item>
<el-radio-group v-model="itemInfo.isLockingSalesPrice" :disabled="true" size="small" style="margin-left: 120px;">
<el-radio-group v-model="itemInfo.isLockingSalesPrice" :disabled="true" size="small"
style="margin-left: 120px;">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
@ -567,7 +571,7 @@
<el-col :span="8">
<div class="span-sty">是否原厂</div>
<el-form-item>
<el-radio-group v-model="itemInfo.isOriginalFactory" size="small" style="margin-left: 120px;">
<el-radio-group v-model="itemInfo.isOriginalFactory" size="small" style="margin-left: 120px;">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
@ -676,7 +680,7 @@
<el-col :span="8">
<div class="span-sty">是否积分兑换</div>
<el-form-item>
<el-radio-group v-model="itemInfo.isIntegralExchange" size="small" style="margin-left: 120px;">
<el-radio-group v-model="itemInfo.isIntegralExchange" size="small" style="margin-left: 120px;">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
@ -698,7 +702,7 @@
<el-col :span="8">
<div class="span-sty">锁定销售价格</div>
<el-form-item>
<el-radio-group v-model="itemInfo.isLockingSalesPrice" size="small" style="margin-left: 120px;">
<el-radio-group v-model="itemInfo.isLockingSalesPrice" size="small" style="margin-left: 120px;">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
@ -782,9 +786,10 @@
goodsDescription: ""
},
baseGoodsSkus: [],
useOrgSid: window.sessionStorage.getItem('departmentSid'),
useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1),
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
createOrgSid: window.sessionStorage.getItem('orgSid'),
createOrgSid:'',
userSid: window.sessionStorage.getItem('userSid'),
},
brandList: [],
@ -800,16 +805,31 @@
}
},
created() {
this.initData()
// this.initData()
},
methods: {
initData() {
var parpams = {
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
userSid: window.sessionStorage.getItem('userSid'),
menuUrl: this.$route.path
getOrgSidByPath({
orgPath: window.sessionStorage.getItem('defaultOrgPath')
}).then((res) => {
if (res.success) {
this.formobj.createOrgSid = res.data
}
})
// var parpams = {
// orgPath: window.sessionStorage.getItem('defaultOrgPath'),
// userSid: window.sessionStorage.getItem('userSid'),
// menuUrl: this.$route.path
// }
var parpams ={
useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1)
}
req2.getAllBrand(parpams).then(resp => {
this.brandList = resp.data
})
@ -874,14 +894,16 @@
goodsDescription: ""
},
baseGoodsSkus: [],
useOrgSid: window.sessionStorage.getItem('departmentSid'),
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
createOrgSid: window.sessionStorage.getItem('orgSid'),
userSid: window.sessionStorage.getItem('userSid'),
useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage
.getItem('defaultOrgPath').lastIndexOf('/') + 1),
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
createOrgSid:'',
userSid: window.sessionStorage.getItem('userSid'),
}
this.$emit('doback')
},
showAdd() {
this.initData()
var sid = require('uuid').v1()
console.log('>>>>>>>>>showAdd', sid)
@ -895,7 +917,7 @@
return index + 1
},
showEdit(row) {
this.initData()
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})

651
yxt-as-ui/src/views/goods/goods/goodsAdd2.vue

@ -1,6 +1,5 @@
<template>
<div>
<div class="tab-header webtop">
<!-- 标题 -->
<div>商品信息</div>
@ -12,524 +11,450 @@
<!-- end 添加修改按钮 -->
<!-- end 详情按钮 -->
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<!-- <div class="title">
<div>基础信息</div>
</div> -->
<el-row class="first_row">
<el-col :span="6">
<div class="span-sty"><span class="must">*</span> 商品名称</div>
<el-form-item prop="goodsName">
<el-input v-model="formobj.goodsName" placeholder="商品名称" class="addinputw addinputInfo" clearable />
<el-input v-model="formobj.goodsName" placeholder="商品名称" class="addinputw addinputInfo" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="must">*</span> 商品编码</div>
<el-form-item prop="goodsCode">
<el-input v-model="formobj.goodsCode" placeholder="商品编码" class="addinputw addinputInfo" clearable />
<el-input v-model="formobj.goodsCode" placeholder="商品编码" class="addinputw addinputInfo" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">条形码</div>
<el-form-item>
<el-input v-model="formobj.barCode" placeholder="由系统自动生成" :readonly="true" class="addinputw addinputInfo"
clearable />
<el-input v-model="formobj.barCode" placeholder="由系统自动生成" :readonly="true" class="addinputw addinputInfo" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"> 拼音缩写</div>
<el-form-item>
<el-input v-model="formobj.goodsPY" placeholder="由系统自动生成" :readonly="true" class="addinputw addinputInfo"
clearable />
<el-input v-model="formobj.goodsPY" placeholder="由系统自动生成" :readonly="true" class="addinputw addinputInfo" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty"><span class="must">*</span> 计量单位</div>
<el-form-item prop="goodsUnitName">
<el-select v-model="formobj.goodsUnitName" placeholder="请选择计量单位" class="addinputw"
@change="selectunitNameChange">
<el-option v-for="item in unitNameList" :key="item.sid" :label="item.unitName" :value="item.sid" />
<el-select v-model="formobj.goodsUnitName" placeholder="请选择计量单位" class="addinputw" @change="selectunitNameChange">
<el-option v-for="item in unitNameList" :key="item.sid" :label="item.unitName" :value="item.sid"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty"><span class="must">*</span> 商品类别</div>
<el-form-item prop="goodsTypeName">
<el-select v-model="formobj.goodsTypeName" placeholder="请选择商品类别" class="addinputw"
@change="selectCateChange">
<el-option v-for="item in cateList" :key="item.sid" :label="item.goodsTypeName" :value="item.sid" />
<el-select v-model="formobj.goodsTypeName" placeholder="请选择商品类别" class="addinputw" @change="selectCateChange">
<el-option v-for="item in cateList" :key="item.sid" :label="item.goodsTypeName" :value="item.sid"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">规格</div>
<el-form-item>
<el-input v-model="formobj.indexes" placeholder="规格" class="addinputw addinputInfo" clearable />
<el-input v-model="formobj.indexes" placeholder="规格" class="addinputw addinputInfo" clearable/>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">保质期()</div>
<el-form-item>
<el-input v-model="formobj.shelfLife " placeholder="保质期(天)" class="addinputw addinputInfo" clearable
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
<el-input v-model="formobj.shelfLife " placeholder="保质期(天)" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty"><span class="must">*</span> 品牌</div>
<el-form-item prop="brandName">
<el-select v-model="formobj.brandName" placeholder="请选择品牌" class="addinputw" @change="selectBrandChange">
<el-option v-for="item in brandList" :key="item.sid" :label="item.brandName" :value="item.sid" />
<el-option v-for="item in brandList" :key="item.sid" :label="item.brandName" :value="item.sid"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<div class="span-sty"><span class="must">*</span> 厂家</div>
<el-form-item prop="manufacturerName">
<el-select v-model="formobj.manufacturerName" placeholder="请选择厂家" class="addinputw"
@change="selectfacturerChange">
<el-option v-for="item in facturerList" :key="item.sid" :label="item.manufacturerName"
:value="item.sid" />
<el-select v-model="formobj.manufacturerName" placeholder="请选择厂家" class="addinputw" @change="selectfacturerChange">
<el-option v-for="item in facturerList" :key="item.sid" :label="item.manufacturerName" :value="item.sid"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">原厂标志</div>
<el-form-item>
<el-radio-group v-model="formobj.isOriginalFactory" size="medium"
style="margin-left: 120px;" @change="selectIsOriginalFactory">
<el-radio-group v-model="formobj.isOriginalFactory" size="medium" style="margin-left: 120px;" @change="selectIsOriginalFactory">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty"><span class="must">*</span> 库存上限</div>
<el-form-item prop="inventoryAlertUpperLimit">
<el-input v-model="formobj.inventoryAlertUpperLimit" placeholder="库存上限" class="addinputw addinputInfo"
clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
<el-input v-model="formobj.inventoryAlertUpperLimit" placeholder="库存上限" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"/>
</el-form-item>
</el-col>
<el-col :span="18">
<div class="span-sty"><span class="must">*</span> 库存下限</div>
<el-form-item prop="inventoryAlertLowerLimit">
<el-input v-model="formobj.inventoryAlertLowerLimit" placeholder="库存下限" class="addinputw addinputInfo"
clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
<el-input v-model="formobj.inventoryAlertLowerLimit" placeholder="库存下限" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty"><span class="must">*</span> 排序</div>
<el-form-item prop="sortNo">
<el-input v-model="formobj.sortNo" placeholder="排序" class="addinputw addinputInfo" clearable
oninput="value=value.replace(/^(0+)|[^\d]+/g,'')" />
<el-input v-model="formobj.sortNo" placeholder="排序" class="addinputw addinputInfo" clearable oninput="value=value.replace(/^(0+)|[^\d]+/g,'')"/>
</el-form-item>
</el-col>
<el-col :span="18">
<div class="span-sty">备注</div>
<el-form-item>
<el-input v-model="formobj.skuRemarks" placeholder="备注" class="addinputw addinputInfo" clearable />
<el-input v-model="formobj.skuRemarks" placeholder="备注" class="addinputw addinputInfo" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<div class="span-sty">锁定销售定价</div>
<el-form-item>
<el-radio-group v-model="formobj.isLockingSalesPrice" size="small" style="margin-left: 120px;"
@change="selectIsLockingSalesPrice">
<el-radio-group v-model="formobj.isLockingSalesPrice" size="small" style="margin-left: 120px;" @change="selectIsLockingSalesPrice">
<el-radio :label="'1'"></el-radio>
<el-radio :label="'2'"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">销售底价</div>
<el-form-item>
<el-input v-model="formobj.minimumSalesPrice" placeholder="销售底价" class="addinputw addinputInfo" clearable
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
<el-input v-model="formobj.minimumSalesPrice" placeholder="销售底价" class="addinputw addinputInfo" clearable oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"/>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">三包价格</div>
<el-form-item>
<el-input v-model="formobj.standardPurchasePrice" placeholder="三包价格" class="addinputw addinputInfo"
clearable
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
<el-input v-model="formobj.standardPurchasePrice" placeholder="三包价格" class="addinputw addinputInfo" clearable
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"/>
</el-form-item>
</el-col>
<el-col :span="6">
<div class="span-sty">首保价格</div>
<el-form-item>
<el-input v-model="formobj.agencyPrice" placeholder="首保价格" class="addinputw addinputInfo" clearable
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')" />
oninput="value=value.replace(/[^\d.]/g, '').replace(/\.{2,}/g, '.').replace('.', '$#$').replace(/\./g, '').replace('$#$', '.').replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3').replace(/^\./g, '')"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">商品图片</div>
<el-form-item>
<upload-img ref="uploadImg" class="addinputw addinputInfo" v-model="imgList" :limit="50" bucket="map"
:upload-data="{ type: '0001' }" @change="backData" />
<upload-img ref="uploadImg" class="addinputw addinputInfo" v-model="imgList" :limit="50" bucket="map" :upload-data="{ type: '0001' }" @change="backData"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import req from '@/api/goods/goods.js'
import req2 from '@/api/goods/brand.js'
import req3 from '@/api/goods/category.js'
import req4 from '@/api/goods/factory.js'
import req5 from '@/api/goods/unit.js'
import uploadImg from '@/components/uploadFile/uploadImg'
export default {
components: {
uploadImg
},
data() {
return {
listLoading: false,
activeNames: ['1'],
imgList: [],
submitdisabled: false,
formobj: {
"sid": "",
"userSid": window.sessionStorage.getItem('userSid'),
"orgPath": window.sessionStorage.getItem('orgSidPath'),
"goodsName": "",
"goodsCode": "",
"goodsPY": "",
"barCode": "",
"goodsUnitSid": "",
"goodsUnitName": "",
"goodsTypeSid": "",
"goodsTypeName": "",
"indexes": "",
"shelfLife": "",
"brandSid": "",
"brandName": "",
"manufacturerSid": "",
"manufacturerName": "",
"isOriginalFactory": "2",
"isOriginalFactoryValue": "",
"sortNo": "",
"skuRemarks": "",
"inventoryAlertUpperLimit": "",
"inventoryAlertLowerLimit": "",
"isLockingSalesPrice": "2",
"isLockingSalesPriceValue": "",
"minimumSalesPrice": "",
"standardPurchasePrice": "",
"agencyPrice": "",
"picPath": []
},
brandList: [],
cateList: [],
facturerList: [],
unitNameList: [],
rules: {
goodsName: [{
required: true,
message: '商品名称不能为空',
trigger: 'blur'
}],
goodsCode: [{
required: true,
message: '商品编码不能为空',
trigger: 'blur'
}],
goodsUnitName: [{
required: true,
message: '请选择计量单位',
trigger: 'change'
}],
goodsTypeName: [{
required: true,
message: '请选择商品类别',
trigger: 'change'
}],
brandName: [{
required: true,
message: '请选择商品品牌',
trigger: 'change'
}],
manufacturerName: [{
required: true,
message: '请选择商品厂家',
trigger: 'change'
}],
sortNo: [{
required: true,
message: '商品排序不能为空',
trigger: 'blur'
}],
inventoryAlertUpperLimit: [{
required: true,
message: '商品上限不能为空',
trigger: 'blur'
}],
inventoryAlertLowerLimitt: [{
required: true,
message: '商品下限不能为空',
trigger: 'blur'
}],
}
import req from '@/api/goods/goods.js'
import req2 from '@/api/goods/brand.js'
import req3 from '@/api/goods/category.js'
import req4 from '@/api/goods/factory.js'
import req5 from '@/api/goods/unit.js'
import { getOrgSidByPath } from '@/api/Common/dictcommons'
import uploadImg from '@/components/uploadFile/uploadImg'
export default {
components: {
uploadImg
},
data() {
return {
listLoading: false,
activeNames: ['1'],
imgList: [],
submitdisabled: false,
formobj: {
sid: '',
userSid: '',
orgPath: '',
useOrgSid: '',
createOrgSid: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
barCode: '',
goodsUnitSid: '',
goodsUnitName: '',
goodsTypeSid: '',
goodsTypeName: '',
indexes: '',
shelfLife: '',
brandSid: '',
brandName: '',
manufacturerSid: '',
manufacturerName: '',
isOriginalFactory: '2',
isOriginalFactoryValue: '',
sortNo: '',
skuRemarks: '',
inventoryAlertUpperLimit: '',
inventoryAlertLowerLimit: '',
isLockingSalesPrice: '2',
isLockingSalesPriceValue: '',
minimumSalesPrice: '',
standardPurchasePrice: '',
agencyPrice: '',
picPath: []
},
brandList: [],
cateList: [],
facturerList: [],
unitNameList: [],
rules: {
goodsName: [{
required: true,
message: '商品名称不能为空',
trigger: 'blur'
}],
goodsCode: [{
required: true,
message: '商品编码不能为空',
trigger: 'blur'
}],
goodsUnitName: [{
required: true,
message: '请选择计量单位',
trigger: 'change'
}],
goodsTypeName: [{
required: true,
message: '请选择商品类别',
trigger: 'change'
}],
brandName: [{
required: true,
message: '请选择商品品牌',
trigger: 'change'
}],
manufacturerName: [{
required: true,
message: '请选择商品厂家',
trigger: 'change'
}],
sortNo: [{
required: true,
message: '商品排序不能为空',
trigger: 'blur'
}],
inventoryAlertUpperLimit: [{
required: true,
message: '商品上限不能为空',
trigger: 'blur'
}],
inventoryAlertLowerLimitt: [{
required: true,
message: '商品下限不能为空',
trigger: 'blur'
}]
}
}
},
methods: {
selectIsOriginalFactory(val) {
console.log('selectIsOriginalFactory》》》》', val)
this.formobj.isOriginalFactoryValue = val === '1' ? '是' : '否'
},
created() {
this.initData()
selectIsLockingSalesPrice(val) {
console.log('selectIsLockingSalesPrice》》》》', val)
this.formobj.isLockingSalesPriceValue = val === '1' ? '是' : '否'
},
methods: {
selectIsOriginalFactory(val) {
console.log('selectIsOriginalFactory》》》》', val)
this.formobj.isOriginalFactoryValue = val == '1' ? '是' : '否'
},
selectIsLockingSalesPrice(val) {
console.log('selectIsLockingSalesPrice》》》》', val)
this.formobj.isLockingSalesPriceValue = val == '1' ? '是' : '否'
},
initData() {
var parpams = {
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
userSid: window.sessionStorage.getItem('userSid'),
menuUrl: this.$route.path
}
req2.getAllBrand(parpams).then(resp => {
this.brandList = resp.data
})
req3.getAllType(parpams).then(resp => {
this.cateList = resp.data
})
req4.getAllFacturer(parpams).then(resp => {
this.facturerList = resp.data
})
req5.getAllUnit(parpams).then(resp => {
this.unitNameList = resp.data
})
},
backData(value) {
console.log('backData》》》》', value)
console.log('imgList', this.imgList)
this.formobj.picPath = this.imgList
},
saveOrUpdate() {
console.log('>>>>>>>>>saveOrUpdate', this.formobj)
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveGoods(this.formobj)
.then(resp => {
if (resp.success) {
this.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.handleReturn('true')
} else {
// resp.code
}
})
.catch(() => {})
initData(deptSid) {
var parpams = { useOrgSid: deptSid }
req2.getAllBrand(parpams).then(resp => {
this.brandList = resp.data
})
req3.getAllType(parpams).then(resp => {
this.cateList = resp.data
})
req4.getAllFacturer(parpams).then(resp => {
this.facturerList = resp.data
})
req5.getAllUnit(parpams).then(resp => {
this.unitNameList = resp.data
})
},
showAdd(userSid, orgSid, deptSid) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.formobj.userSid = userSid
this.formobj.useOrgSid = deptSid
this.formobj.createOrgSid = orgSid
this.initData(deptSid)
},
showEdit(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.initGoods(row.sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
this.initData(this.formobj.useOrgSid)
for (var i = 0; i < resp.data.picPath.length; i++) {
var item = resp.data.picPath[i]
this.imgList.push({
url: item.url
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
"sid": "",
"userSid": window.sessionStorage.getItem('userSid'),
"orgPath": window.sessionStorage.getItem('orgSidPath'),
"goodsName": "",
"goodsCode": "",
"goodsPY": "",
"barCode": "",
"goodsUnitSid": "",
"goodsUnitName": "",
"goodsTypeSid": "",
"goodsTypeName": "",
"indexes": "",
"shelfLife": "",
"brandSid": "",
"brandName": "",
"manufacturerSid": "",
"manufacturerName": "",
"isOriginalFactory": "2",
"isOriginalFactoryValue": "",
"sortNo": "",
"skuRemarks": "",
"inventoryAlertUpperLimit": "",
"inventoryAlertLowerLimit": "",
"isLockingSalesPrice": "2",
"isLockingSalesPriceValue": "",
"minimumSalesPrice": "",
"standardPurchasePrice": "",
"agencyPrice": "",
"picPath": []
}
this.imgList = []
this.$emit('doback')
},
showAdd() {
// var sid = require('uuid').v1()
// console.log('>>>>>>>>>showAdd', sid)
// this.formobj.sid = sid
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
},
indexMethod(index) {
return index + 1
},
showEdit(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.initGoods(row.sid)
.then(resp => {
}).catch(e => {
this.formobj = row
})
},
selectBrandChange(val) {
const choose = this.brandList.filter((item) => item.sid === val)
console.log('>>>>>>>>>selectBrandChange', choose)
this.formobj.brandSid = choose[0].sid
this.formobj.brandName = choose[0].brandName
},
selectCateChange(val) {
const choose = this.cateList.filter((item) => item.sid === val)
console.log('>>>>>>>>>selectCateChange', choose)
this.formobj.goodsTypeSid = choose[0].sid
this.formobj.goodsTypeName = choose[0].goodsTypeName
},
selectfacturerChange(val) {
const choose = this.facturerList.filter((item) => item.sid === val)
console.log('>>>>>>>>>selectfacturerChange', choose)
this.formobj.manufacturerSid = choose[0].sid
this.formobj.manufacturerName = choose[0].manufacturerName
},
selectunitNameChange(val) {
const choose = this.unitNameList.filter((item) => item.sid === val)
console.log('>>>>>>>>>selectunitNameChange', choose)
this.formobj.goodsUnitSid = choose[0].sid
this.formobj.goodsUnitName = choose[0].unitName
},
backData(value) {
console.log('backData》》》》', value)
console.log('imgList', this.imgList)
this.formobj.picPath = this.imgList
},
saveOrUpdate() {
console.log('>>>>>>>>>saveOrUpdate', this.formobj)
this.$refs['form_obj'].validate((valid) => {
if (valid) {
req.saveGoods(this.formobj).then(resp => {
if (resp.success) {
this.formobj = resp.data
for (var i = 0; i < resp.data.picPath.length; i++) {
var item = resp.data.picPath[i]
this.imgList.push({
url: item.url
})
}
this.$message({
showClose: true,
type: 'success',
message: resp.msg
})
this.handleReturn('true')
} else {
// resp.code
}
}).catch(() => {
})
.catch(e => {
this.formobj = row
})
},
selectBrandChange(val) {
const choose = this.brandList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectBrandChange', choose)
this.formobj.brandSid = choose[0].sid
this.formobj.brandName = choose[0].brandName
},
selectCateChange(val) {
const choose = this.cateList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectCateChange', choose)
this.formobj.goodsTypeSid = choose[0].sid
this.formobj.goodsTypeName = choose[0].goodsTypeName
},
selectfacturerChange(val) {
const choose = this.facturerList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectfacturerChange', choose)
this.formobj.manufacturerSid = choose[0].sid
this.formobj.manufacturerName = choose[0].manufacturerName
},
selectunitNameChange(val) {
const choose = this.unitNameList.filter((item) => item.sid == val)
console.log('>>>>>>>>>selectunitNameChange', choose)
this.formobj.goodsUnitSid = choose[0].sid
this.formobj.goodsUnitName = choose[0].unitName
},
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
sid: '',
userSid: '',
orgPath: '',
useOrgSid: '',
createOrgSid: '',
goodsName: '',
goodsCode: '',
goodsPY: '',
barCode: '',
goodsUnitSid: '',
goodsUnitName: '',
goodsTypeSid: '',
goodsTypeName: '',
indexes: '',
shelfLife: '',
brandSid: '',
brandName: '',
manufacturerSid: '',
manufacturerName: '',
isOriginalFactory: '2',
isOriginalFactoryValue: '',
sortNo: '',
skuRemarks: '',
inventoryAlertUpperLimit: '',
inventoryAlertLowerLimit: '',
isLockingSalesPrice: '2',
isLockingSalesPriceValue: '',
minimumSalesPrice: '',
standardPurchasePrice: '',
agencyPrice: '',
picPath: []
}
this.imgList = []
this.$emit('doback')
}
}
}
</script>
<style scoped>
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.must {
color: #f00;
}
.must {
color: #f00;
}
.span-sty {
width: 130px !important;
}
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.first_row {
border-top: 1px solid #E0E3EB;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.el-radio /deep/ .el-radio__label {
.el-radio /deep/ .el-radio__label {
font-size: 14px !important;
font-size: 14px !important;
}
}
</style>

18
yxt-as-ui/src/views/goods/goods/index.vue

@ -147,6 +147,7 @@
import pageye from '@/components/pagination/pageye'
import divAdd from './goodsAdd2.vue'
import divInfo from './goodsInfo2.vue'
import { getOrgSidByPath } from '@/api/Common/dictcommons'
export default {
components: {
ButtonBar,
@ -230,29 +231,22 @@
},
methods: {
initData() {
var parpams = {
orgPath: window.sessionStorage.getItem('defaultOrgPath'),
userSid: window.sessionStorage.getItem('userSid'),
menuUrl: this.$route.path
}
var parpams = { useOrgSid: window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1) }
//
req2.getAllBrand(parpams).then(resp => {
console.log('>>>>>>>>>getAllBrand', resp)
this.brandList = resp.data
}).catch(() => {})
//
req3.getAllType(parpams).then(resp => {
console.log('>>>>>>>>>getAllType', resp)
this.goodsTypeList = resp.data
}).catch(() => {})
//
req4.getAllFacturer(parpams).then(resp => {
console.log('>>>>>>>>>getAllFacturer', resp)
this.facturerList = resp.data
}).catch(() => {})
},
selectBrandChange(val) {
@ -367,7 +361,13 @@
},
toAdd() {
this.viewState = 2
this.$refs['divadd'].showAdd()
var orgSid = ''
getOrgSidByPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
orgSid = res.data
}
})
this.$refs['divadd'].showAdd(window.sessionStorage.getItem('userSid'), orgSid, window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1))
},
toEdit() {

6
yxt-as-ui/src/views/purchase/procurement/procurement.vue

@ -31,7 +31,7 @@
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.finishEndTime" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="采购类型">
<el-form-item label="采购方式">
<el-select v-model="listQuery.params.purchaseTypeValue" placeholder="请选择" clearable filterable>
<el-option v-for="item in procurementType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
@ -88,11 +88,11 @@
<el-table-column prop="deptName" label="申请部门" align="center" width="120" />
<el-table-column prop="createTime" label="申请日期" align="center" width="120" />
<el-table-column prop="finishTime" label="办结日期" align="center" width="120" />
<el-table-column prop="purchaseTypeValue" label="采购类型" align="center" width="100" />
<el-table-column prop="purchaseTypeValue" label="采购方式" align="center" width="100" />
<el-table-column prop="purchaseReasonValue" label="采购原因" align="center" width="100" />
<el-table-column prop="payTypeValue" label="付款方式" align="center" width="100" />
<el-table-column prop="supplierName" label="供应商" align="center" min-width="150" />
<el-table-column prop="isInvoicing" label="是否开票" align="center" width="100" />
<el-table-column prop="isInvoicing" label="是否开票" align="center" width="100" />
<el-table-column prop="amountCount" label="采购金额合计" align="center" width="140" />
<el-table-column prop="payableAmount" label="应付金额合计" align="center" width="140" />
</el-table>

100
yxt-as-ui/src/views/purchase/procurement/procurementAdd.vue

@ -27,11 +27,16 @@
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>采购类型</div>
<div class="span-sty"><span class="icon">*</span>采购方式</div>
<el-form-item prop="purchaseTypeValue">
<el-select class="addinputInfo" v-model="formobj.purchaseTypeValue" placeholder="请选择" @change="purchaseTypeChange" clearable filterable>
<el-option v-for="item in procurementType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
<div class="addinputInfo" style="display: flex;flex-direction: row;justify-content: flex-start;align-items: center">
<el-select v-model="formobj.purchaseTypeValue" placeholder="请选择" @change="purchaseTypeChange" clearable filterable>
<el-option v-for="item in procurementType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
<el-select v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 5px" v-model="formobj.operateBrandValue" placeholder="选择经营品牌" @change="operateBrandChange" clearable filterable>
<el-option v-for="item in operateBrand_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
@ -55,13 +60,18 @@
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>供应商</div>
<el-form-item prop="supplierSid">
<el-select class="addinputInfo" v-model="formobj.supplierSid" placeholder="请选择" @change="supplierChange" clearable filterable>
<el-option v-for="item in supplier_list" :key="item.sid" :label="item.supplierName" :value="item.sid"></el-option>
</el-select>
<div class="addinputInfo" style="display: flex;flex-direction: row;justify-content: flex-start;align-items: center">
<el-select v-model="formobj.supplierSid" placeholder="请选择" @change="supplierChange" clearable filterable>
<el-option v-for="item in supplier_list" :key="item.sid" :label="item.supplierName" :value="item.sid"></el-option>
</el-select>
<el-select v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 5px" v-model="formobj.warehouseTypeValue" placeholder="选择仓库类型" @change="warehouseTypeChange" clearable filterable>
<el-option v-for="item in warehouseType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>是否需要发票</div>
<div class="span-sty"><span class="icon">*</span>是否发票</div>
<el-form-item prop="purchaseBillInvoice.isInvoicing">
<el-radio-group class="addinputInfo" @change="isInvoicingChange" v-model="formobj.purchaseBillInvoice.isInvoicing">
<el-radio label="1"></el-radio>
@ -117,16 +127,12 @@
</el-form-item>
</el-col>
<el-col :span="8" v-if="formobj.purchasePay.isFirstPay == '0'">
<div class="span-sty"><span class="icon">*</span>验货后付货款</div>
<el-form-item prop="purchasePay.goodsMoney">
<el-input class="addinputInfo addinputw" @keyup.native="formobj.purchasePay.goodsMoney = getNumber(formobj.purchasePay.goodsMoney, 2)" v-model="formobj.purchasePay.goodsMoney" clearable placeholder=""/>
</el-form-item>
<div class="span-sty">验货后付货款</div>
<el-form-item><span class="addinputInfo">{{ calculateGoodsMoney }}</span></el-form-item>
</el-col>
<el-col :span="16" v-else>
<div class="span-sty"><span class="icon">*</span>审批通过后付货款</div>
<el-form-item prop="purchasePay.goodsMoney">
<el-input class="addinputInfo addinputw" @keyup.native="formobj.purchasePay.goodsMoney = getNumber(formobj.purchasePay.goodsMoney, 2)" v-model="formobj.purchasePay.goodsMoney" clearable placeholder=""/>
</el-form-item>
<div class="span-sty">审批通过后付货款</div>
<el-form-item><span class="addinputInfo">{{ calculateGoodsMoney }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
@ -245,9 +251,11 @@ export default {
index: 0,
accept: '.jpg,.jpeg,.png',
procurementType_list: [],
operateBrand_list: [],
procurementReason_list: [],
paymentMethod_list: [],
supplier_list: [],
warehouseType_list: [],
account_list: [],
formobj: {
sid: '',
@ -288,6 +296,10 @@ export default {
useOrgName: '',
createOrgSid: '',
createOrgName: '',
operateBrandKey: '',
operateBrandValue: '',
warehouseTypeKey: '',
warehouseTypeValue: '',
purchasePay: {
sid: '',
billSid: '',
@ -312,14 +324,13 @@ export default {
pmsPurchaseBillDetailList: []
},
rules: {
purchaseTypeValue: [{ required: true, message: '采购类型不能为空', trigger: 'change' }],
purchaseTypeValue: [{ required: true, message: '采购方式不能为空', trigger: 'change' }],
purchaseReasonValue: [{ required: true, message: '采购原因不能为空', trigger: 'change' }],
payTypeValue: [{ required: true, message: '付款方式不能为空', trigger: 'change' }],
supplierSid: [{ required: true, message: '供应商不能为空', trigger: 'change' }],
'purchaseBillInvoice.isInvoicing': [{ required: true, message: '是否需要发票不能为空', trigger: 'change' }],
'purchaseBillInvoice.isInvoicing': [{ required: true, message: '是否发票不能为空', trigger: 'change' }],
'purchasePay.isFirstPay': [{ required: true, message: '是否先付货款不能为空', trigger: 'change' }],
'purchasePay.deposit': [{ required: true, message: '审批通过后付订金不能为空', trigger: 'blur' }],
'purchasePay.goodsMoney': [{ required: true, message: '付货款不能为空', trigger: 'blur' }]
'purchasePay.deposit': [{ required: true, message: '审批通过后付订金不能为空', trigger: 'blur' }]
}
}
},
@ -348,10 +359,25 @@ export default {
}
return cg
},
//
yfTotal() {
let yf = '0'
yf = Math.round((parseFloat(yf) + parseFloat(this.cgTotal) + parseFloat(this.formobj.freight !== '' ? this.formobj.freight : '0') - parseFloat(this.formobj.discountAmount !== '' ? this.formobj.discountAmount : '0') + parseFloat(this.formobj.errorAmount !== '' ? this.formobj.errorAmount : '0')) * 100) / 100
return yf
},
//
calculateGoodsMoney() {
let goodsMoney = '0'
if (this.formobj.payTypeValue === '单笔付款') {
if (this.formobj.purchasePay.isFirstPay === '1') {
// =
goodsMoney = this.yfTotal
} else if (this.formobj.purchasePay.isFirstPay === '0') {
// = -
goodsMoney = parseFloat(this.yfTotal) - parseFloat(this.formobj.purchasePay.deposit !== '' ? this.formobj.purchasePay.deposit : '0')
}
}
return goodsMoney
}
},
methods: {
@ -361,6 +387,16 @@ export default {
this.procurementType_list = res.data
}
})
typeValues({ type: 'operateBrand' }).then((res) => {
if (res.success) {
this.operateBrand_list = res.data
}
})
typeValues({ type: 'warehouseType' }).then((res) => {
if (res.success) {
this.warehouseType_list = res.data
}
})
typeValues({ type: 'procurementReason' }).then((res) => {
if (res.success) {
this.procurementReason_list = res.data
@ -441,6 +477,14 @@ export default {
this.formobj.purchaseTypeKey = ''
}
},
operateBrandChange(value) {
const choose = this.operateBrand_list.filter((item) => item.dictValue === value)
if (choose !== null && choose.length > 0) {
this.formobj.operateBrandKey = choose[0].dictKey
} else {
this.formobj.operateBrandKey = ''
}
},
purchaseReasonChange(value) {
const choose = this.procurementReason_list.filter((item) => item.dictValue === value)
if (choose !== null && choose.length > 0) {
@ -467,6 +511,14 @@ export default {
this.account_list = []
}
},
warehouseTypeChange(value) {
const choose = this.warehouseType_list.filter((item) => item.dictValue === value)
if (choose !== null && choose.length > 0) {
this.formobj.warehouseTypeKey = choose[0].dictKey
} else {
this.formobj.warehouseTypeKey = ''
}
},
isInvoicingChange(val) {
if (val === '1') {
const choose = this.supplier_list.filter((item) => item.sid === this.formobj.supplierSid)
@ -494,7 +546,7 @@ export default {
selectProducts() {
this.viewState = 2
const aa = []
this.$refs['divSp'].showData(aa, this.formobj.deptSid)
this.$refs['divSp'].showData(aa, this.formobj.createBySid, this.formobj.createOrgSid, this.formobj.deptSid)
},
backData(value) {
this.viewState = 1
@ -538,6 +590,7 @@ export default {
if (valid) {
this.submitdisabled = true
this.formobj.payableAmount = this.yfTotal
this.formobj.purchasePay.goodsMoney = this.calculateGoodsMoney
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
@ -556,6 +609,7 @@ export default {
if (valid) {
this.submitdisabled = true
this.formobj.payableAmount = this.yfTotal
this.formobj.purchasePay.goodsMoney = this.calculateGoodsMoney
req.submit(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '提交成功' })
@ -610,6 +664,10 @@ export default {
useOrgName: '',
createOrgSid: '',
createOrgName: '',
operateBrandKey: '',
operateBrandValue: '',
warehouseTypeKey: '',
warehouseTypeValue: '',
purchasePay: {
sid: '',
billSid: '',

16
yxt-as-ui/src/views/purchase/procurement/procurementInfo.vue

@ -25,8 +25,8 @@
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">采购类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseTypeValue }}</span></el-form-item>
<div class="span-sty">采购方式</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseTypeValue }}<span v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 20px">{{ formobj.operateBrandValue }}</span></span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购原因</div>
@ -40,10 +40,10 @@
<el-row>
<el-col :span="8">
<div class="span-sty">供应商</div>
<el-form-item><span class="addinputInfo">{{ formobj.supplierName }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.supplierName }}<span v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 20px">{{ formobj.warehouseTypeValue }}</span></span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否需要发票</div>
<div class="span-sty">是否发票</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseBillInvoice.isInvoicing == '1' ? '是' : '否' }}</span></el-form-item>
</el-col>
<el-col :span="8">
@ -212,6 +212,10 @@ export default {
useOrgName: '',
createOrgSid: '',
createOrgName: '',
operateBrandKey: '',
operateBrandValue: '',
warehouseTypeKey: '',
warehouseTypeValue: '',
purchasePay: {
sid: '',
billSid: '',
@ -328,6 +332,10 @@ export default {
useOrgName: '',
createOrgSid: '',
createOrgName: '',
operateBrandKey: '',
operateBrandValue: '',
warehouseTypeKey: '',
warehouseTypeValue: '',
purchasePay: {
sid: '',
billSid: '',

31
yxt-as-ui/src/views/purchase/procurement/relation/chooseproducts.vue

@ -1,10 +1,11 @@
<template>
<div class="app-container">
<div>
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>选择商品</div>
<div>
<el-button type="primary" size="small" @click="AddUpdateReturn">确定</el-button>
<el-button type="primary" size="small" @click="toConfirm">确定</el-button>
<el-button type="primary" size="small" @click="addProducts">新增商品</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -51,26 +52,32 @@
</div>
</div>
</div>
<goodsAdd2 v-show="viewState == 2" ref="divAdd" @reloadlist="getList" @doback="resetState" />
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import { chooseproducts } from '@/api/Common/dictcommons'
import goodsAdd2 from '@/views/goods/goods/goodsAdd2'
export default {
name: 'SelectVehicle',
components: {
Pagination
Pagination,
goodsAdd2
},
data() {
return {
viewState: 1,
isSearchShow: false,
searchxianshitit: '隐藏查询条件',
tableKey: 0,
sids: [],
list: [],
number: '',
userSid: '',
createOrgSid: '',
deptSid: '',
listLoading: false,
listQuery: {
current: 1,
@ -129,7 +136,7 @@ export default {
handleSelectionChange(row) {
this.sids = row
},
showData(value, useOrgSid) {
showData(value, userSid, createOrgSid, deptSid) {
// const aa = []
// if (value.length > 0) {
// for (var i = 0; i < value.length; i++) {
@ -139,20 +146,30 @@ export default {
// } else {
// this.listQuery.params.saleVehSids = []
// }``
this.listQuery.params.useOrgSid = useOrgSid
this.userSid = userSid
this.createOrgSid = createOrgSid
this.deptSid = deptSid
this.listQuery.params.useOrgSid = deptSid
this.listQuery.current = 1
this.listQuery.size = 5
this.listQuery.total = 0
this.getList()
},
//
AddUpdateReturn() {
toConfirm() {
if (this.sids.length > 0) {
this.$emit('backData', this.sids)
} else {
this.$notify({ title: '提示', message: '请至少选择一条记录进行操作', type: 'error', duration: 2000 })
}
},
addProducts() {
this.viewState = 2
this.$refs['divAdd'].showAdd(this.userSid, this.createOrgSid, this.deptSid)
},
resetState() {
this.viewState = 1
},
//
handleReturn() {
this.$emit('doback')

12
yxt-as-ui/src/views/workFlow/caigouFlow/procurementDaiBan.vue

@ -28,8 +28,8 @@
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">采购类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseTypeValue }}</span></el-form-item>
<div class="span-sty">采购方式</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseTypeValue }}<span v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 20px">{{ formobj.operateBrandValue }}</span></span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购原因</div>
@ -43,10 +43,10 @@
<el-row>
<el-col :span="8">
<div class="span-sty">供应商</div>
<el-form-item><span class="addinputInfo">{{ formobj.supplierName }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.supplierName }}<span v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 20px">{{ formobj.warehouseTypeValue }}</span></span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否需要发票</div>
<div class="span-sty">是否发票</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseBillInvoice.isInvoicing == '1' ? '是' : '否' }}</span></el-form-item>
</el-col>
<el-col :span="8">
@ -254,6 +254,10 @@ export default {
useOrgName: '',
createOrgSid: '',
createOrgName: '',
operateBrandKey: '',
operateBrandValue: '',
warehouseTypeKey: '',
warehouseTypeValue: '',
purchasePay: {
sid: '',
billSid: '',

96
yxt-as-ui/src/views/workFlow/caigouFlow/procurementEdit.vue

@ -26,11 +26,16 @@
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>采购类型</div>
<div class="span-sty"><span class="icon">*</span>采购方式</div>
<el-form-item prop="purchaseTypeValue">
<el-select class="addinputInfo" v-model="formobj.purchaseTypeValue" placeholder="请选择" @change="purchaseTypeChange" clearable filterable>
<el-option v-for="item in procurementType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
<div class="addinputInfo" style="display: flex;flex-direction: row;justify-content: flex-start;align-items: center">
<el-select v-model="formobj.purchaseTypeValue" placeholder="请选择" @change="purchaseTypeChange" clearable filterable>
<el-option v-for="item in procurementType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
<el-select v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 5px" v-model="formobj.operateBrandValue" placeholder="选择经营品牌" @change="operateBrandChange" clearable filterable>
<el-option v-for="item in operateBrand_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
@ -54,13 +59,18 @@
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>供应商</div>
<el-form-item prop="supplierSid">
<el-select class="addinputInfo" v-model="formobj.supplierSid" placeholder="请选择" @change="supplierChange" clearable filterable>
<el-option v-for="item in supplier_list" :key="item.sid" :label="item.supplierName" :value="item.sid"></el-option>
</el-select>
<div class="addinputInfo" style="display: flex;flex-direction: row;justify-content: flex-start;align-items: center">
<el-select v-model="formobj.supplierSid" placeholder="请选择" @change="supplierChange" clearable filterable>
<el-option v-for="item in supplier_list" :key="item.sid" :label="item.supplierName" :value="item.sid"></el-option>
</el-select>
<el-select v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 5px" v-model="formobj.warehouseTypeValue" placeholder="选择仓库类型" @change="warehouseTypeChange" clearable filterable>
<el-option v-for="item in warehouseType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"></el-option>
</el-select>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span class="icon">*</span>是否需要发票</div>
<div class="span-sty"><span class="icon">*</span>是否发票</div>
<el-form-item prop="purchaseBillInvoice.isInvoicing">
<el-radio-group class="addinputInfo" @change="isInvoicingChange" v-model="formobj.purchaseBillInvoice.isInvoicing">
<el-radio label="1"></el-radio>
@ -116,16 +126,12 @@
</el-form-item>
</el-col>
<el-col :span="8" v-if="formobj.purchasePay.isFirstPay == '0'">
<div class="span-sty"><span class="icon">*</span>验货后付货款</div>
<el-form-item prop="purchasePay.goodsMoney">
<el-input class="addinputInfo addinputw" @keyup.native="formobj.purchasePay.goodsMoney = getNumber(formobj.purchasePay.goodsMoney, 2)" v-model="formobj.purchasePay.goodsMoney" clearable placeholder=""/>
</el-form-item>
<div class="span-sty">验货后付货款</div>
<el-form-item><span class="addinputInfo">{{ calculateGoodsMoney }}</span></el-form-item>
</el-col>
<el-col :span="16" v-else>
<div class="span-sty"><span class="icon">*</span>审批通过后付货款</div>
<el-form-item prop="purchasePay.goodsMoney">
<el-input class="addinputInfo addinputw" @keyup.native="formobj.purchasePay.goodsMoney = getNumber(formobj.purchasePay.goodsMoney, 2)" v-model="formobj.purchasePay.goodsMoney" clearable placeholder=""/>
</el-form-item>
<div class="span-sty">审批通过后付货款</div>
<el-form-item><span class="addinputInfo">{{ calculateGoodsMoney }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
@ -244,9 +250,11 @@ export default {
index: 0,
accept: '.jpg,.jpeg,.png',
procurementType_list: [],
operateBrand_list: [],
procurementReason_list: [],
paymentMethod_list: [],
supplier_list: [],
warehouseType_list: [],
account_list: [],
formobj: {
sid: '',
@ -287,6 +295,10 @@ export default {
useOrgName: '',
createOrgSid: '',
createOrgName: '',
operateBrandKey: '',
operateBrandValue: '',
warehouseTypeKey: '',
warehouseTypeValue: '',
purchasePay: {
sid: '',
billSid: '',
@ -311,14 +323,13 @@ export default {
pmsPurchaseBillDetailList: []
},
rules: {
purchaseTypeValue: [{ required: true, message: '采购类型不能为空', trigger: 'change' }],
purchaseTypeValue: [{ required: true, message: '采购方式不能为空', trigger: 'change' }],
purchaseReasonValue: [{ required: true, message: '采购原因不能为空', trigger: 'change' }],
payTypeValue: [{ required: true, message: '付款方式不能为空', trigger: 'change' }],
supplierSid: [{ required: true, message: '供应商不能为空', trigger: 'change' }],
'purchaseBillInvoice.isInvoicing': [{ required: true, message: '是否需要发票不能为空', trigger: 'change' }],
'purchaseBillInvoice.isInvoicing': [{ required: true, message: '是否发票不能为空', trigger: 'change' }],
'purchasePay.isFirstPay': [{ required: true, message: '是否先付货款不能为空', trigger: 'change' }],
'purchasePay.deposit': [{ required: true, message: '审批通过后付订金不能为空', trigger: 'blur' }],
'purchasePay.goodsMoney': [{ required: true, message: '付货款不能为空', trigger: 'blur' }]
'purchasePay.deposit': [{ required: true, message: '审批通过后付订金不能为空', trigger: 'blur' }]
}
}
},
@ -364,10 +375,25 @@ export default {
}
return cg
},
//
yfTotal() {
let yf = '0'
yf = Math.round((parseFloat(yf) + parseFloat(this.cgTotal) + parseFloat(this.formobj.freight !== '' ? this.formobj.freight : '0') - parseFloat(this.formobj.discountAmount !== '' ? this.formobj.discountAmount : '0') + parseFloat(this.formobj.errorAmount !== '' ? this.formobj.errorAmount : '0')) * 100) / 100
return yf
},
//
calculateGoodsMoney() {
let goodsMoney = '0'
if (this.formobj.payTypeValue === '单笔付款') {
if (this.formobj.purchasePay.isFirstPay === '1') {
// =
goodsMoney = this.yfTotal
} else if (this.formobj.purchasePay.isFirstPay === '0') {
// = -
goodsMoney = parseFloat(this.yfTotal) - parseFloat(this.formobj.purchasePay.deposit !== '' ? this.formobj.purchasePay.deposit : '0')
}
}
return goodsMoney
}
},
methods: {
@ -377,6 +403,16 @@ export default {
this.procurementType_list = res.data
}
})
typeValues({ type: 'operateBrand' }).then((res) => {
if (res.success) {
this.operateBrand_list = res.data
}
})
typeValues({ type: 'warehouseType' }).then((res) => {
if (res.success) {
this.warehouseType_list = res.data
}
})
typeValues({ type: 'procurementReason' }).then((res) => {
if (res.success) {
this.procurementReason_list = res.data
@ -432,6 +468,14 @@ export default {
this.formobj.purchaseTypeKey = ''
}
},
operateBrandChange(value) {
const choose = this.operateBrand_list.filter((item) => item.dictValue === value)
if (choose !== null && choose.length > 0) {
this.formobj.operateBrandKey = choose[0].dictKey
} else {
this.formobj.operateBrandKey = ''
}
},
purchaseReasonChange(value) {
const choose = this.procurementReason_list.filter((item) => item.dictValue === value)
if (choose !== null && choose.length > 0) {
@ -458,6 +502,14 @@ export default {
this.account_list = []
}
},
warehouseTypeChange(value) {
const choose = this.warehouseType_list.filter((item) => item.dictValue === value)
if (choose !== null && choose.length > 0) {
this.formobj.warehouseTypeKey = choose[0].dictKey
} else {
this.formobj.warehouseTypeKey = ''
}
},
isInvoicingChange(val) {
if (val === '1') {
const choose = this.supplier_list.filter((item) => item.sid === this.formobj.supplierSid)
@ -485,7 +537,7 @@ export default {
selectProducts() {
this.viewState = 2
const aa = []
this.$refs['divSp'].showData(aa, this.formobj.deptSid)
this.$refs['divSp'].showData(aa, this.formobj.createBySid, this.formobj.createOrgSid, this.formobj.deptSid)
},
backData(value) {
this.viewState = 1
@ -529,6 +581,7 @@ export default {
if (valid) {
this.submitdisabled = true
this.formobj.payableAmount = this.yfTotal
this.formobj.purchasePay.goodsMoney = this.calculateGoodsMoney
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
@ -554,6 +607,7 @@ export default {
if (valid) {
this.submitdisabled = true
this.formobj.payableAmount = this.yfTotal
this.formobj.purchasePay.goodsMoney = this.calculateGoodsMoney
req.submit(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '提交成功' })

12
yxt-as-ui/src/views/workFlow/caigouFlow/procurementYiBan.vue

@ -25,8 +25,8 @@
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">采购类型</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseTypeValue }}</span></el-form-item>
<div class="span-sty">采购方式</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseTypeValue }}<span v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 20px">{{ formobj.operateBrandValue }}</span></span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">采购原因</div>
@ -40,10 +40,10 @@
<el-row>
<el-col :span="8">
<div class="span-sty">供应商</div>
<el-form-item><span class="addinputInfo">{{ formobj.supplierName }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.supplierName }}<span v-show="formobj.purchaseTypeValue == '代理库'" style="margin-left: 20px">{{ formobj.warehouseTypeValue }}</span></span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">是否需要发票</div>
<div class="span-sty">是否发票</div>
<el-form-item><span class="addinputInfo">{{ formobj.purchaseBillInvoice.isInvoicing == '1' ? '是' : '否' }}</span></el-form-item>
</el-col>
<el-col :span="8">
@ -212,6 +212,10 @@ export default {
useOrgName: '',
createOrgSid: '',
createOrgName: '',
operateBrandKey: '',
operateBrandValue: '',
warehouseTypeKey: '',
warehouseTypeValue: '',
purchasePay: {
sid: '',
billSid: '',

31
yxt-as-ui/src/views/workFlow/caigouFlow/relation/chooseproducts.vue

@ -1,10 +1,11 @@
<template>
<div class="app-container">
<div>
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>选择商品</div>
<div>
<el-button type="primary" size="small" @click="AddUpdateReturn">确定</el-button>
<el-button type="primary" size="small" @click="toConfirm">确定</el-button>
<el-button type="primary" size="small" @click="addProducts">新增商品</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -51,26 +52,32 @@
</div>
</div>
</div>
<goodsAdd2 v-show="viewState == 2" ref="divAdd" @reloadlist="getList" @doback="resetState" />
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import { chooseproducts } from '@/api/Common/dictcommons'
import goodsAdd2 from '@/views/goods/goods/goodsAdd2'
export default {
name: 'SelectVehicle',
components: {
Pagination
Pagination,
goodsAdd2
},
data() {
return {
viewState: 1,
isSearchShow: false,
searchxianshitit: '隐藏查询条件',
tableKey: 0,
sids: [],
list: [],
number: '',
userSid: '',
createOrgSid: '',
deptSid: '',
listLoading: false,
listQuery: {
current: 1,
@ -129,7 +136,7 @@ export default {
handleSelectionChange(row) {
this.sids = row
},
showData(value, useOrgSid) {
showData(value, userSid, createOrgSid, deptSid) {
// const aa = []
// if (value.length > 0) {
// for (var i = 0; i < value.length; i++) {
@ -139,20 +146,30 @@ export default {
// } else {
// this.listQuery.params.saleVehSids = []
// }``
this.listQuery.params.useOrgSid = useOrgSid
this.userSid = userSid
this.createOrgSid = createOrgSid
this.deptSid = deptSid
this.listQuery.params.useOrgSid = deptSid
this.listQuery.current = 1
this.listQuery.size = 5
this.listQuery.total = 0
this.getList()
},
//
AddUpdateReturn() {
toConfirm() {
if (this.sids.length > 0) {
this.$emit('backData', this.sids)
} else {
this.$notify({ title: '提示', message: '请至少选择一条记录进行操作', type: 'error', duration: 2000 })
}
},
addProducts() {
this.viewState = 2
this.$refs['divAdd'].showAdd(this.userSid, this.createOrgSid, this.deptSid)
},
resetState() {
this.viewState = 1
},
//
handleReturn() {
this.$emit('doback')

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

@ -93,6 +93,8 @@ public class AsBusrepairBill extends BaseEntity {
private String groupName;
@ApiModelProperty("应收金额")
private BigDecimal receivableAmount;
@ApiModelProperty("实收金额")
private BigDecimal actualAmount;
@ApiModelProperty("工时费")
private BigDecimal hourAmount;
@ApiModelProperty("材料费")
@ -109,4 +111,19 @@ public class AsBusrepairBill extends BaseEntity {
private BigDecimal taxAmount;
@ApiModelProperty("是否外出(1是,2否)")
private String isGoOut;
@ApiModelProperty("索赔厂家")
private String claimManufacturer;
@ApiModelProperty("索赔厂家sid")
private String claimManufacturerSid;
@ApiModelProperty("特殊标志(1有,0无)")
private Integer isSpecialSign;
@ApiModelProperty("施救费")
private BigDecimal rescueAmount;
@ApiModelProperty("厂家补助备注")
private String subsidyRemarks;
@ApiModelProperty("施救费备注")
private String rescueRemarks;
@ApiModelProperty("外出费备注")
private String outRemarks;
}

25
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDetailsVo.java

@ -18,8 +18,24 @@ import java.util.List;
public class AsBusrepairBillDetailsVo implements Vo {
private String sid;
private String orgPath;
@ApiModelProperty("索赔厂家")
private String claimManufacturer;
@ApiModelProperty("索赔厂家sid")
private String claimManufacturerSid;
@ApiModelProperty("特殊标志(1有,0无)")
private String isSpecialSign;
@ApiModelProperty("客户来源 ")
private String customerSource;
@ApiModelProperty("对接人sid")
private String dockingPeopleSid;
@ApiModelProperty("对接人")
private String dockingPeople;
@ApiModelProperty("对接人电话")
private String dockingPhone;
@ApiModelProperty("应收金额")
private String receivableAmount;
@ApiModelProperty("实收金额")
private String actualAmount;
@ApiModelProperty("工时费")
private String hourAmount;
@ApiModelProperty("材料费")
@ -133,4 +149,13 @@ public class AsBusrepairBillDetailsVo implements Vo {
private List<GoodsDetailsVo> goodsDetailsVos = new ArrayList<>(); //商品信息
private SettleVo settleVo = new SettleVo(); //结算信息
private boolean showReSettleBtn; //是否显示反结算按钮,ture显示,false不显示
@ApiModelProperty("厂家补助备注")
private String subsidyRemarks;
@ApiModelProperty("施救费备注")
private String rescueRemarks;
@ApiModelProperty("外出费备注")
private String outRemarks;
@ApiModelProperty("施救费")
private String rescueAmount;
private String fileName; //文件名称
}

26
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/AsBusrepairBillDto.java

@ -20,8 +20,24 @@ public class AsBusrepairBillDto implements Dto {
private String orgPath;
@ApiModelProperty("是否外出(1是,2否)")
private String isGoOut;
@ApiModelProperty("索赔厂家")
private String claimManufacturer;
@ApiModelProperty("索赔厂家sid")
private String claimManufacturerSid;
@ApiModelProperty("特殊标志(1有,0无)")
private String isSpecialSign;
@ApiModelProperty("客户来源")
private String customerSource;
@ApiModelProperty("对接人sid")
private String dockingPeopleSid;
@ApiModelProperty("对接人")
private String dockingPeople;
@ApiModelProperty("对接人电话")
private String dockingPhone;
@ApiModelProperty("应收金额")
private String receivableAmount;
@ApiModelProperty("实收金额")
private String actualAmount;
@ApiModelProperty("工时费")
private String hourAmount;
@ApiModelProperty("材料费")
@ -117,5 +133,13 @@ public class AsBusrepairBillDto implements Dto {
private List<AitemVo> aitemVos = new ArrayList<>();// 附加项目
private SettleVo settleVo = new SettleVo(); //结算信息
private List<GoodsDetailsVo> goodsDetailsVos = new ArrayList<>(); //商品信息
@ApiModelProperty("厂家补助备注")
private String subsidyRemarks;
@ApiModelProperty("施救费备注")
private String rescueRemarks;
@ApiModelProperty("外出费备注")
private String outRemarks;
@ApiModelProperty("施救费")
private String rescueAmount;
private String fileName; //文件名称
}

34
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InsuranceRecordVo.java

@ -0,0 +1,34 @@
package com.yxt.anrui.as.api.asbusrepairbill;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/1 14:01
*/
@Data
public class InsuranceRecordVo {
@ApiModelProperty("工单sid")
private String billSid;
@ApiModelProperty("使用保险方Key")
private String useInsurerKey;
@ApiModelProperty("使用保险方")
private String useInsurer;
@ApiModelProperty("使用险种key")
private String insuranceTypeKey;
@ApiModelProperty("使用险种")
private String insuranceType;
@ApiModelProperty("保险公司key")
private String insuranceCompanyKey;
@ApiModelProperty("保险公司")
private String insuranceCompany;
@ApiModelProperty("报案号")
private String claimBillNo;
@ApiModelProperty("勘察员及电话")
private String investigator;
@ApiModelProperty("定损员及电话")
private String lossAdjuster;
}

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

@ -3,6 +3,8 @@ package com.yxt.anrui.as.api.asbusrepairbill;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @author Fan
* @description
@ -13,28 +15,14 @@ public class InsuranceVo {
@ApiModelProperty("责任划分")
private String responsibility;
@ApiModelProperty("对方险种")
private String otherInsuranceType;
@ApiModelProperty("责任划分")
private String responsibilityKey;
@ApiModelProperty("对方险种")
private String otherInsuranceTypeKey;
@ApiModelProperty("保险公司1")
private String insuranceCompany1;
@ApiModelProperty("保险公司2")
private String insuranceCompany2;
@ApiModelProperty("保险人员")
private String insurer;
@ApiModelProperty("保险索赔单号")
private String claimBillNo;
@ApiModelProperty("勘察员")
private String investigator;
@ApiModelProperty("定损员")
private String lossAdjuster;
@ApiModelProperty("特殊标志(1有,0无)")
private String isSpecialSign;
@ApiModelProperty("出险类型")
private String accidentType;
@ApiModelProperty("出险类型")
private String accidentTypeKey;
@ApiModelProperty("是否存在人伤(1是,0否)")
private String isPersonInjuries;
@ApiModelProperty("责任比例Key")
private String responsibilityRatioKey;
@ApiModelProperty("责任比例")
private String responsibilityRatio;
private List<InsuranceRecordVo> insuranceList;
}

5
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/InvoiceVo.java

@ -27,5 +27,8 @@ public class InvoiceVo {
private String invoiceCode;
@ApiModelProperty("税率")
private String taxRate;
@ApiModelProperty("开票单位sid")
private String invoiceCompanySid;
@ApiModelProperty("开票单位")
private String invoiceCompany;
}

2
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbill/SitemVo.java

@ -26,7 +26,7 @@ public class SitemVo {
private String subjectSid;
@ApiModelProperty("科目(自费、保内等)")
private String subject;
@ApiModelProperty("考核工时(考核价)")
@ApiModelProperty("工时提成")
private String examineHourPrice;
@ApiModelProperty("工时单价")
private String hourPrice;

7
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillinsurance/AsBusrepairBillInsurance.java

@ -45,4 +45,11 @@ public class AsBusrepairBillInsurance extends BaseEntity {
private String accidentType;
@ApiModelProperty("出险类型")
private String accidentTypeKey;
@ApiModelProperty("是否存在人伤(1是,0否)")
private String isPersonInjuries;
@ApiModelProperty("责任比例Key")
private String responsibilityRatioKey;
@ApiModelProperty("责任比例")
private String responsibilityRatio;
}

40
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillinsurancerecord/AsBusrepairBillInsuranceRecord.java

@ -0,0 +1,40 @@
package com.yxt.anrui.as.api.asbusrepairbillinsurancerecord;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author Fan
* @description
* @date 2024/7/1 13:57
*/
@Data
@ApiModel(value = "维修工单-保险信息列表", description = "维修工单-保险信息列表")
@TableName("as_busrepair_bill_insurance_record")
public class AsBusrepairBillInsuranceRecord extends BaseEntity {
@ApiModelProperty("工单sid")
private String billSid;
@ApiModelProperty("使用保险方Key")
private String useInsurerKey;
@ApiModelProperty("使用保险方")
private String useInsurer;
@ApiModelProperty("使用险种key")
private String insuranceTypeKey;
@ApiModelProperty("使用险种")
private String insuranceType;
@ApiModelProperty("保险公司key")
private String insuranceCompanyKey;
@ApiModelProperty("保险公司")
private String insuranceCompany;
@ApiModelProperty("报案号")
private String claimBillNo;
@ApiModelProperty("勘察员及电话")
private String investigator;
@ApiModelProperty("定损员及电话")
private String lossAdjuster;
}

5
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusrepairbillinvoice/AsBusrepairBillInvoice.java

@ -32,6 +32,9 @@ public class AsBusrepairBillInvoice extends BaseEntity {
private String invoiceCode;
@ApiModelProperty("税率")
private BigDecimal taxRate;
@ApiModelProperty("开票单位sid")
private String invoiceCompanySid;
@ApiModelProperty("开票单位")
private String invoiceCompany;
}

6
yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsBrandRest.java

@ -30,9 +30,9 @@ public class BaseGoodsBrandRest {
return baseBrandInfoService.listPage(pq);
}
@ApiOperation("查询所有的品牌")
@PostMapping("/listAll")
public ResultBean<List<BaseBrandInfo>> listAll(@RequestBody OrgPathQuery query) {
return baseBrandInfoService.listAll(query);
@GetMapping("/listAll")
public ResultBean<List<BaseBrandInfo>> listAll(@RequestParam("useOrgSid") String useOrgSid) {
return baseBrandInfoService.listAll(useOrgSid);
}
@ApiOperation("保存修改")
@PostMapping("/saveOrUpdate")

6
yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsTypeRest.java

@ -30,9 +30,9 @@ public class BaseGoodsTypeRest {
return baseGoodsTypeService.listPage(pq);
}
@ApiOperation("查询所有的类别")
@PostMapping("/listAll")
public ResultBean<List<BaseGoodsType>> listAll(@RequestBody OrgPathQuery query) {
return baseGoodsTypeService.listAll(query);
@GetMapping("/listAll")
public ResultBean<List<BaseGoodsType>> listAll(@RequestParam("useOrgSid") String useOrgSid) {
return baseGoodsTypeService.listAll(useOrgSid);
}
@ApiOperation("根据数据权限查询类别")

6
yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsUnitRest.java

@ -30,9 +30,9 @@ public class BaseGoodsUnitRest {
return baseGoodsUnitService.listPage(pq);
}
@ApiOperation("查询所有的类别")
@PostMapping("/listAll")
public ResultBean<List<BaseGoodsUnit>> listAll(@RequestBody OrgPathQuery query) {
return baseGoodsUnitService.listAll(query);
@GetMapping("/listAll")
public ResultBean<List<BaseGoodsUnit>> listAll(@RequestParam("useOrgSid") String useOrgSid) {
return baseGoodsUnitService.listAll(useOrgSid);
}
@ApiOperation("保存修改")

6
yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseManufacturerRest.java

@ -31,9 +31,9 @@ public class BaseManufacturerRest {
}
@ApiOperation("查询所有的厂家")
@PostMapping("/listAll")
public ResultBean<List<BaseManufacturer>> listAll(@RequestBody OrgPathQuery query) {
return baseManufacturerService.listAll(query);
@GetMapping("/listAll")
public ResultBean<List<BaseManufacturer>> listAll(@RequestParam("useOrgSid") String useOrgSid) {
return baseManufacturerService.listAll(useOrgSid);
}
@ApiOperation("保存修改")

83
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basebrandinfo/BaseBrandInfoService.java

@ -40,6 +40,7 @@ public class BaseBrandInfoService extends MybatisBaseService<BaseBrandInfoMapper
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
public ResultBean<PagerVo<BaseBrandInfoVo>> listPage(PagerQuery<BaseBrandInfoQuery> pq) {
ResultBean rb = ResultBean.fireFail();
BaseBrandInfoQuery query = pq.getParams();
@ -80,10 +81,10 @@ public class BaseBrandInfoService extends MybatisBaseService<BaseBrandInfoMapper
PagerVo<BaseBrandInfoVo> p = new PagerVo<>();
return rb.success().setData(p);
}
if(StringUtils.isNotBlank(query.getName())){
qw.like("b.brandName",query.getName());
if (StringUtils.isNotBlank(query.getName())) {
qw.like("b.brandName", query.getName());
}
qw.ne("b.isDelete","1");
qw.ne("b.isDelete", "1");
IPage<BaseBrandInfo> page = PagerUtil.queryToPage(pq);
IPage<BaseBrandInfoVo> pagging = baseMapper.listPage(page, qw);
PagerVo<BaseBrandInfoVo> p = PagerUtil.pageToVo(pagging, null);
@ -98,62 +99,13 @@ public class BaseBrandInfoService extends MybatisBaseService<BaseBrandInfoMapper
// }
return rb.success().setData(p);
}
public ResultBean<List<BaseBrandInfo>> listAll(@RequestBody OrgPathQuery query) {
ResultBean rb = ResultBean.fireFail();
QueryWrapper<BaseBrandInfo> qw = new QueryWrapper<>();
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("s.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("s.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("s.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("s.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("b.createBySid", query.getUserSid());
} else {
return rb.success().setData(new ArrayList<>());
}
} else {
return rb.success().setData(new ArrayList<>());
}
qw.eq("b.isEnable",1);
qw.ne("b.isDelete",1);
List<BaseBrandInfo> pagging = baseMapper.selListAll(qw);
// String useOrgSid = "";
// String orgPath = query.getOrgPath();
// if (StringUtils.isNotBlank(orgPath)) {
// List<String> split = Arrays.asList(orgPath.split("/"));
// if (split.size() > 1) {
// //获取本级sid获取本级部门信息
// SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
// useOrgSid = sysOrganization1.getSid();
// } else {
// SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
// useOrgSid = sysOrganization.getSid();
// }
// }
// List<BaseBrandInfo> pagging = baseMapper.selectList(new QueryWrapper<BaseBrandInfo>().eq("isEnable",1).ne("isDelete","1").eq("useOrgSid",useOrgSid));
return rb.success().setData(pagging);
}
public ResultBean<List<BaseBrandInfo>> listAll(String useOrgSid) {
ResultBean rb = ResultBean.fireFail();
List<BaseBrandInfo> pagging = baseMapper.selectList(new QueryWrapper<BaseBrandInfo>().eq("isEnable", 1).ne("isDelete", "1").eq("useOrgSid", useOrgSid));
return rb.success().setData(pagging);
}
public ResultBean<String> saveOrUpdate(BaseBrandInfoDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = "";
@ -168,8 +120,8 @@ public class BaseBrandInfoService extends MybatisBaseService<BaseBrandInfoMapper
// wmsGoodsBrand.setBigPic(path);
// }
wmsGoodsBrand.setModifyTime(new Date());
BaseBrandInfo goods=baseMapper.checkForUpdate(dto.getBrandCode(),wmsGoodsBrand.getUseOrgSid(),sid);
if(null!=goods){
BaseBrandInfo goods = baseMapper.checkForUpdate(dto.getBrandCode(), wmsGoodsBrand.getUseOrgSid(), sid);
if (null != goods) {
return rb.setMsg("品牌代码不能重复");
}
baseMapper.updateById(wmsGoodsBrand);
@ -205,8 +157,8 @@ public class BaseBrandInfoService extends MybatisBaseService<BaseBrandInfoMapper
wmsGoodsBrand.setCreateOrgSid(createOrgSid);
}
}
BaseBrandInfo goods=baseMapper.checkForInsert(dto.getBrandCode(),deptSid);
if(null!=goods){
BaseBrandInfo goods = baseMapper.checkForInsert(dto.getBrandCode(), deptSid);
if (null != goods) {
return rb.setMsg("品牌代码不能重复");
}
// if (StringUtils.isNotBlank(dto.getBigPic())) {
@ -239,7 +191,6 @@ public class BaseBrandInfoService extends MybatisBaseService<BaseBrandInfoMapper
}
public ResultBean delete(String sid) {
ResultBean rb = ResultBean.fireFail();
BaseBrandInfo wmsGoodsBrand = fetchBySid(sid);
@ -248,10 +199,12 @@ public class BaseBrandInfoService extends MybatisBaseService<BaseBrandInfoMapper
}
return rb.success().setMsg("成功");
}
public void delAll(String[] sids) {
int count = baseMapper.updateBySidIsDelete(Arrays.stream(sids).collect(Collectors.toList()));
}
public ResultBean updateIsEnable(String sid,String isEnable) {
public ResultBean updateIsEnable(String sid, String isEnable) {
ResultBean rb = ResultBean.fireFail();
BaseBrandInfo wmsGoodsBrand = fetchBySid(sid);
if (null != wmsGoodsBrand) {

2
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsDto.java

@ -19,6 +19,8 @@ public class BaseGoodsDetailsDto implements Dto {
private String userSid;
private String orgPath;
private String createOrgSid;
private String useOrgSid;
private String goodsName;//商品名称
private String goodsCode;//图号
private String goodsPY;//拼音缩写

3
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsDetailsVo.java

@ -17,7 +17,8 @@ public class BaseGoodsDetailsVo implements Vo {
private String sid;
private String userSid;
private String orgPath;
private String createOrgSid;
private String useOrgSid;
private String goodsName;//商品名称
private String goodsCode;//图号
private String goodsPY;//拼音缩写

34
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java

@ -282,10 +282,6 @@ public class BaseGoodsSpuService extends MybatisBaseService<BaseGoodsSpuMapper,
public ResultBean<String> saveOrUpdateGoods(BaseGoodsDetailsDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = "";
String orgPath = "";
if (StringUtils.isNotBlank(dto.getOrgPath())) {
orgPath = dto.getOrgPath();
}
BaseGoodsSpu spun = baseMapper.selectOne(new QueryWrapper<BaseGoodsSpu>().eq("sid", dto.getSid()));
if (spun != null) {
sid = dto.getSid();
@ -415,34 +411,10 @@ public class BaseGoodsSpuService extends MybatisBaseService<BaseGoodsSpuMapper,
sid = wmsGoods.getSid();
BeanUtil.copyProperties(dto, wmsGoods, "id", "sid");
wmsGoods.setCreateBySid(dto.getUserSid());
String deptName = "";
String deptSid = "";
String createOrgSid = "";
if (StringUtils.isNotBlank(orgPath)) {
List<String> split = Arrays.asList(orgPath.split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(split.size() - 2)).getData();
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
deptName = sysOrganization.getName() + "/" + sysOrganization1.getName();
deptName = sysOrganization1.getName();
deptSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
deptName = sysOrganization.getName();
deptName = sysOrganization.getName();
deptSid = sysOrganization.getSid();
}
wmsGoods.setUseOrgSid(deptSid);
createOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
//创建组织使用组织
ResultBean<SysOrganizationVo> organizationResultBean = sysOrganizationFeign.fetchBySid(createOrgSid);
if (organizationResultBean.getData() != null) {
wmsGoods.setCreateOrgSid(createOrgSid);
}
}
wmsGoods.setUseOrgSid(dto.getUseOrgSid());
wmsGoods.setCreateOrgSid(dto.getCreateOrgSid());
wmsGoods.setGoodsPY(PinYinUtils.sx(wmsGoods.getGoodsName()));
BaseGoodsSpu spu = baseMapper.checkForInsert(dto.getGoodsCode(), deptSid);
BaseGoodsSpu spu = baseMapper.checkForInsert(dto.getGoodsCode(), dto.getUseOrgSid());
if (spu != null) {
return rb.setMsg("商品编码重复");
}

64
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodstype/BaseGoodsTypeService.java

@ -21,6 +21,7 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -169,65 +170,12 @@ public class BaseGoodsTypeService extends MybatisBaseService<BaseGoodsTypeMapper
return rb.success().setData(p);
}
public ResultBean<List<BaseGoodsType>> listAll(OrgPathQuery query) {
public ResultBean<List<BaseGoodsType>> listAll(String useOrgSid) {
ResultBean rb = ResultBean.fireFail();
QueryWrapper<BaseGoodsType> qw = new QueryWrapper<>();
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("u.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("u.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("u.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("u.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("p.createBySid", query.getUserSid());
} else {
return rb.success().setData(new ArrayList<>());
}
} else {
return rb.success().setData(new ArrayList<>());
}
}
qw.eq("p.isEnable", 1);
qw.ne("p.isDelete", 1);
List<BaseGoodsType> pagging = baseMapper.selListAll(qw);
// String useOrgSid = "";
// String orgPath = query.getOrgPath();
// if (StringUtils.isNotBlank(orgPath)) {
// List<String> split = Arrays.asList(orgPath.split("/"));
// if (split.size() > 1) {
// //获取本级sid获取本级部门信息
// SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
// useOrgSid = sysOrganization1.getSid();
// } else {
// SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
// useOrgSid = sysOrganization.getSid();
// }
// }
// List<BaseGoodsType> pagging = baseMapper.selectList(new QueryWrapper<BaseGoodsType>().eq("isEnable",1)
// .ne("isDelete","1")
// .eq("useOrgSid",useOrgSid)
// );
List<BaseGoodsType> pagging = baseMapper.selectList(new QueryWrapper<BaseGoodsType>().eq("isEnable",1)
.ne("isDelete","1")
.eq("useOrgSid",useOrgSid)
);
return rb.success().setData(pagging);
}

16
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsunit/BaseGoodsUnitService.java

@ -21,6 +21,7 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.text.SimpleDateFormat;
import java.util.Arrays;
@ -91,21 +92,8 @@ public class BaseGoodsUnitService extends MybatisBaseService<BaseGoodsUnitMapper
PagerVo<BaseGoodsUnitVo> p = PagerUtil.pageToVo(pagging, null);
List<BaseGoodsUnitVo> records = pagging.getRecords();
return rb.success().setData(p);
} public ResultBean<List<BaseGoodsUnit>> listAll(OrgPathQuery query) {
} public ResultBean<List<BaseGoodsUnit>> listAll(String useOrgSid) {
ResultBean rb = ResultBean.fireFail();
String useOrgSid = "";
String orgPath = query.getOrgPath();
if (StringUtils.isNotBlank(orgPath)) {
List<String> split = Arrays.asList(orgPath.split("/"));
if (split.size() > 1) {
//获取本级sid获取本级部门信息
SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
useOrgSid = sysOrganization1.getSid();
} else {
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
useOrgSid = sysOrganization.getSid();
}
}
List<BaseGoodsUnit> pagging = baseMapper.selectList(new QueryWrapper<BaseGoodsUnit>().eq("isEnable",1)
.ne("isDelete","1")
.eq("useOrgSid",useOrgSid)

62
yxt-base-biz/src/main/java/com/yxt/base/biz/base/basemanufacturer/BaseManufacturerService.java

@ -21,6 +21,7 @@ import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@ -94,63 +95,12 @@ public class BaseManufacturerService extends MybatisBaseService<BaseManufacturer
List<BaseManufacturerVo> records = pagging.getRecords();
return rb.success().setData(p);
}
public ResultBean<List<BaseManufacturer>> listAll(OrgPathQuery query) {
public ResultBean<List<BaseManufacturer>> listAll(String useOrgSid) {
ResultBean rb = ResultBean.fireFail();
QueryWrapper<BaseManufacturer> qw = new QueryWrapper<>();
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("u.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("u.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("u.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("u.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("p.createBySid", query.getUserSid());
} else {
return rb.success().setData(new ArrayList<>());
}
} else {
return rb.success().setData(new ArrayList<>());
}
qw.eq("p.isEnable",1);
qw.ne("p.isDelete",1);
List<BaseManufacturer> pagging = baseMapper.selListAll(qw);
// String useOrgSid = "";
// String orgPath = query.getOrgPath();
// if (StringUtils.isNotBlank(orgPath)) {
// List<String> split = Arrays.asList(orgPath.split("/"));
// if (split.size() > 1) {
// //获取本级sid获取本级部门信息
// SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData();
// useOrgSid = sysOrganization1.getSid();
// } else {
// SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData();
// useOrgSid = sysOrganization.getSid();
// }
// }
// List<BaseManufacturer> pagging = baseMapper.selectList(new QueryWrapper<BaseManufacturer>().eq("isEnable",1)
// .ne("isDelete","1")
// .eq("useOrgSid",useOrgSid)
// );
List<BaseManufacturer> pagging = baseMapper.selectList(new QueryWrapper<BaseManufacturer>().eq("isEnable",1)
.ne("isDelete","1")
.eq("useOrgSid",useOrgSid)
);
return rb.success().setData(pagging);
}

3
工作内容需要的文档/单据模板/财务凭证打印模板/还款计划/还款计划3.docx

@ -186,7 +186,7 @@ ${dueDate3!}
首期月还:
${fMoney2!}
${fMoney3!}
期间月还:
${mMoney3!}
末期月还:
@ -206,3 +206,4 @@ ${lMoney3!}
Loading…
Cancel
Save