From 04f5a3055d0d752c7685e9bd9fc2e3aa8eb3e242 Mon Sep 17 00:00:00 2001 From: JIAL <2287346125@qq.com> Date: Wed, 28 Feb 2024 15:01:49 +0800 Subject: [PATCH] 1 --- .../controller/JNController.java | 39 - .../jnzmquatation/dto/JnInventoryDto.java | 23 - .../demo/jnzmquatation/dto/JnMaterialDto.java | 34 +- .../demo/jnzmquatation/dto/JnRegionDto.java | 36 - .../jnzmquatation/entity/MaterialEneity.java | 24 + .../mapper/JnInventoryMapper.java | 24 - .../mapper/JnMaterialMapper.java | 30 +- .../jnzmquatation/mapper/JnRegionMapper.java | 20 - .../service/JnInventoryService.java | 16 - .../service/JnRegionService.java | 17 - .../service/impl/JnInventoryServiceImpl.java | 35 - .../service/impl/JnRegionServiceImpl.java | 36 - src/main/resources/application-JN.yml | 2 +- .../static/jnquotation/css/index.css | 4 +- .../resources/static/jnquotation/js/index.js | 2 +- .../templates/jnquotation/index.html | 889 ++++++++++-------- .../templates/zmquotation/index.html | 1 - target/JNDemo-1.0-SNAPSHOT.jar | Bin 62306129 -> 62305966 bytes target/JNDemo-1.0-SNAPSHOT.jar.original | Bin 521494 -> 521331 bytes target/classes/application-JN.yml | 2 +- .../controller/JNController.class | Bin 2985 -> 1831 bytes .../jnzmquatation/dto/JnInventoryDto.class | Bin 2477 -> 0 bytes .../jnzmquatation/dto/JnMaterialDto.class | Bin 9030 -> 7007 bytes .../demo/jnzmquatation/dto/JnRegionDto.class | Bin 5361 -> 0 bytes .../jnzmquatation/entity/MaterialEneity.class | Bin 0 -> 4100 bytes .../mapper/JnInventoryMapper.class | Bin 564 -> 0 bytes .../mapper/JnMaterialMapper.class | Bin 1709 -> 1418 bytes .../jnzmquatation/mapper/JnRegionMapper.class | Bin 655 -> 0 bytes .../service/JnInventoryService.class | Bin 290 -> 0 bytes .../service/JnRegionService.class | Bin 363 -> 0 bytes .../service/impl/JnInventoryServiceImpl.class | Bin 937 -> 0 bytes .../service/impl/JnRegionServiceImpl.class | Bin 1027 -> 0 bytes .../classes/static/jnquotation/css/index.css | 4 +- target/classes/static/jnquotation/js/index.js | 2 +- .../classes/templates/jnquotation/index.html | 889 ++++++++++-------- .../classes/templates/zmquotation/index.html | 1 - .../compile/default-compile/inputFiles.lst | 112 +-- .../default-testCompile/createdFiles.lst | 0 .../default-testCompile/inputFiles.lst | 0 39 files changed, 1056 insertions(+), 1186 deletions(-) delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/dto/JnInventoryDto.java delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/dto/JnRegionDto.java create mode 100644 src/main/java/com/JN/demo/jnzmquatation/entity/MaterialEneity.java delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/mapper/JnInventoryMapper.java delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/mapper/JnRegionMapper.java delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/service/JnInventoryService.java delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/service/JnRegionService.java delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/service/impl/JnInventoryServiceImpl.java delete mode 100644 src/main/java/com/JN/demo/jnzmquatation/service/impl/JnRegionServiceImpl.java delete mode 100644 target/classes/com/JN/demo/jnzmquatation/dto/JnInventoryDto.class delete mode 100644 target/classes/com/JN/demo/jnzmquatation/dto/JnRegionDto.class create mode 100644 target/classes/com/JN/demo/jnzmquatation/entity/MaterialEneity.class delete mode 100644 target/classes/com/JN/demo/jnzmquatation/mapper/JnInventoryMapper.class delete mode 100644 target/classes/com/JN/demo/jnzmquatation/mapper/JnRegionMapper.class delete mode 100644 target/classes/com/JN/demo/jnzmquatation/service/JnInventoryService.class delete mode 100644 target/classes/com/JN/demo/jnzmquatation/service/JnRegionService.class delete mode 100644 target/classes/com/JN/demo/jnzmquatation/service/impl/JnInventoryServiceImpl.class delete mode 100644 target/classes/com/JN/demo/jnzmquatation/service/impl/JnRegionServiceImpl.class create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst diff --git a/src/main/java/com/JN/demo/jnzmquatation/controller/JNController.java b/src/main/java/com/JN/demo/jnzmquatation/controller/JNController.java index 7b02560..b8bf88d 100644 --- a/src/main/java/com/JN/demo/jnzmquatation/controller/JNController.java +++ b/src/main/java/com/JN/demo/jnzmquatation/controller/JNController.java @@ -1,12 +1,8 @@ package com.JN.demo.jnzmquatation.controller; import com.JN.common.R; -import com.JN.demo.jnzmquatation.dto.JnInventoryDto; import com.JN.demo.jnzmquatation.dto.JnMaterialDto; -import com.JN.demo.jnzmquatation.dto.JnRegionDto; -import com.JN.demo.jnzmquatation.service.JnInventoryService; import com.JN.demo.jnzmquatation.service.JnMaterialService; -import com.JN.demo.jnzmquatation.service.JnRegionService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -27,32 +23,12 @@ import java.util.List; @Slf4j @RequestMapping("/jnquotation") public class JNController { - @Autowired - JnRegionService regionService; @Autowired JnMaterialService materialService; - @Autowired - JnInventoryService inventoryService; - /** - * @title queryRegionList - * @description 查询地区列表信息 - * @author JIAL - * @param: regionName - * @updateTime 2024/2/20 16:54 - * @return: com.JN.common.R> - */ - @PostMapping("/regionList") - public R queryRegionList(@RequestParam("regionName") String regionName){ - List regionList = regionService.queryRegionListByName(regionName); - - log.info("查询到的地区列表结果是:{}", regionList); - - return R.success(regionList); - } /** * @title queryMaterialList @@ -77,19 +53,4 @@ public class JNController { return R.success(materialList); } - /** - * @title queryInventoryList - * @description 获取盘具列表 - * @author JIAL - * @updateTime 2024/2/22 10:09 - * @return: com.JN.common.R> - */ - @PostMapping("/inventoryList") - public R queryInventoryList() { - List inventoryList = inventoryService.queryInventoryList(); - - return R.success(inventoryList); - } - - } diff --git a/src/main/java/com/JN/demo/jnzmquatation/dto/JnInventoryDto.java b/src/main/java/com/JN/demo/jnzmquatation/dto/JnInventoryDto.java deleted file mode 100644 index 2a3b16c..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/dto/JnInventoryDto.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.JN.demo.jnzmquatation.dto; - -import lombok.Data; - -import java.io.Serializable; - -/** - * @ClassName InventoryDto - * @Description TODO - * @Author JIAL - * @Date 2024/2/22 9:48 - * @Version 1.0 - */ -@Data -public class JnInventoryDto implements Serializable { - private static final long serialVersionUID = 1L; - - private String inventory; //盘具名称 - - private String invDesc; //盘具描述 - - private String weighInv; //盘重 -} diff --git a/src/main/java/com/JN/demo/jnzmquatation/dto/JnMaterialDto.java b/src/main/java/com/JN/demo/jnzmquatation/dto/JnMaterialDto.java index af10c68..27bc04b 100644 --- a/src/main/java/com/JN/demo/jnzmquatation/dto/JnMaterialDto.java +++ b/src/main/java/com/JN/demo/jnzmquatation/dto/JnMaterialDto.java @@ -15,37 +15,27 @@ import java.io.Serializable; public class JnMaterialDto implements Serializable { private static final long serialVersionUID = 1L; - private String materialName; //物料名称 + private String uid; //物料uid + + private String prodCategory; //产品大类 + + private String prodWorkshop; //生产车间 private String model; //型号 private String specification; //规格 - private String voltage; //电压 + private String voltLevel; //电压等级 - private String standard; //标准 + private String measureUnit; //单位 - private String costPrice; //成本价 + private String matCostPrice; //材料成本价格 - private String factoryPrice; //厂价 + private String redBookPrice; //红本价格 - private String netVolume; //净种量(物料重量) + private String redBookCost; //红本成本 - private String inventory; //盘具 + private String rbFacPrice; //红本厂价 - private String weighInv; //盘重 - - private String matPrice; //材料价格(去掉铜铝后的价格) - - private String totalCopperConsume; //铜导体总消耗 - - private String totalAluminumConsume; //铝导体总消耗 - - private String totalLHCost; //人工水电费合计 - - private String steamFee; //蒸汽费 - - private int quantity = 1; //数量默认为1 - - private int invItemCount = 1; //盘具数量默认1 + private Integer number = 1; //数量默认1 } diff --git a/src/main/java/com/JN/demo/jnzmquatation/dto/JnRegionDto.java b/src/main/java/com/JN/demo/jnzmquatation/dto/JnRegionDto.java deleted file mode 100644 index 9f390e1..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/dto/JnRegionDto.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.JN.demo.jnzmquatation.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.math.BigDecimal; - -/** - * @ClassName RegionDto - * @Description TODO - * @Author JIAL - * @Date 2024/2/19 10:40 - * @Version 1.0 - */ -@Data -public class JnRegionDto implements Serializable { - private static final long serialVersionUID = 1L; - - private String province; - - private String city; - - private String district; - - private Integer kilometers; - - private BigDecimal price01; - - private BigDecimal price02; - - private BigDecimal price03; - - private BigDecimal price04; - - private BigDecimal price05; -} diff --git a/src/main/java/com/JN/demo/jnzmquatation/entity/MaterialEneity.java b/src/main/java/com/JN/demo/jnzmquatation/entity/MaterialEneity.java new file mode 100644 index 0000000..6b9898a --- /dev/null +++ b/src/main/java/com/JN/demo/jnzmquatation/entity/MaterialEneity.java @@ -0,0 +1,24 @@ +package com.JN.demo.jnzmquatation.entity; + +import lombok.Data; + +/** + * @ClassName MaterialEneity + * @Description TODO + * @Author JIAL + * @Date 2024/2/27 13:57 + * @Version 1.0 + */ +@Data +public class MaterialEneity { + + private String uid_0; + private String desp_0; + private String desp_1; + private String desp_2; + private String model_0; + private String model_1; + private String spec_0; + + +} diff --git a/src/main/java/com/JN/demo/jnzmquatation/mapper/JnInventoryMapper.java b/src/main/java/com/JN/demo/jnzmquatation/mapper/JnInventoryMapper.java deleted file mode 100644 index eec98c7..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/mapper/JnInventoryMapper.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.JN.demo.jnzmquatation.mapper; - -import com.JN.demo.jnzmquatation.dto.JnInventoryDto; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * @ClassName InventoryMapper - * @Description TODO - * @Author JIAL - * @Date 2024/2/22 9:56 - * @Version 1.0 - */ -@Mapper -public interface JnInventoryMapper { - - @Select("SELECT [cbpj_mc] as inventory,\n" + - " [cbpj_pzjd1] as inv_desc,\n" + - " [cbpj_zl] as weigh_inv\n" + - "FROM [zm_erp2].[dbo].[cb_cbpj]") - List queryInventoryList(); -} diff --git a/src/main/java/com/JN/demo/jnzmquatation/mapper/JnMaterialMapper.java b/src/main/java/com/JN/demo/jnzmquatation/mapper/JnMaterialMapper.java index 671e386..787330b 100644 --- a/src/main/java/com/JN/demo/jnzmquatation/mapper/JnMaterialMapper.java +++ b/src/main/java/com/JN/demo/jnzmquatation/mapper/JnMaterialMapper.java @@ -15,24 +15,18 @@ import java.util.List; */ @Mapper public interface JnMaterialMapper { - @Select(" SELECT [cb_name] as material_name\n" + - " ,[cb_cj] as factory_price\n" + - " ,[cb_cbj] as cost_price\n" + - " ,[cb_zl] as net_volume\n" + - " ,[cb_gspj] as inventory\n" + - " ,[cbpj_zl] as weigh_inv\n" + - " ,[CB_bz] as standard\n" + - " ,[cb_xx] as model\n" + - " ,[cb_gg] as specification\n" + - " ,[cb_dy] as voltage\n" + - " ,[cb_cljg] as mat_price\n" + - " ,[tdtjg] as total_copper_consume\n" + - " ,[ldtjg] as total_aluminum_consume\n" + - " ,[rgsdf] as total_l_h_cost\n" + - " ,[cb_zqf]as steam_fee\n" + - " ,ROW_NUMBER() OVER(Order by [cb_name]) AS RowId\n" + - " FROM [zm_erp2].[dbo].[view_cb_material]\n" + - " WHERE [cb_name] like '${precMaterialName}%' and [cb_name] like '%${vagueMaterialName}%' and [cb_gg] like '%${vagueModel}%'") + @Select("SELECT [uid_0] AS uid \n" + + " ,[desp_0] AS prodCategory\n" + + " ,[model_0] AS model\n" + + " ,[spec_0] AS specification\n" + + " ,[voltage_0] AS voltLevel\n" + + " ,[unit_0] AS measureUnit\n" + + " ,[redBookPrice] \n" + + " ,[rbFacPrice]\n" + + " ,[matCostPrice]\n" + + " ,[redBookCost]\n" + + " FROM [jn_quot].[dbo].[c_material_detail]" + + " WHERE [model_0] like '${precMaterialName}%' and [model_0] like '%${vagueMaterialName}%' and [spec_0] like '%${vagueModel}%'") List queryMaterialListByParam(String precMaterialName, String vagueMaterialName, String vagueModel); diff --git a/src/main/java/com/JN/demo/jnzmquatation/mapper/JnRegionMapper.java b/src/main/java/com/JN/demo/jnzmquatation/mapper/JnRegionMapper.java deleted file mode 100644 index 83c5344..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/mapper/JnRegionMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.JN.demo.jnzmquatation.mapper; - -import com.JN.demo.jnzmquatation.dto.JnRegionDto; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; - -import java.util.List; - -/** - * @ClassName RegionMapper - * @Description TODO - * @Author JIAL - * @Date 2024/2/19 10:47 - * @Version 1.0 - */ -@Mapper -public interface JnRegionMapper { - @Select("select * from c_place a where 1=1 and a.province like '%${regionName}%' or a.city like '%${regionName}%' or a.district like '%${regionName}%' ") - List queryRegionListByName(String regionName); -} diff --git a/src/main/java/com/JN/demo/jnzmquatation/service/JnInventoryService.java b/src/main/java/com/JN/demo/jnzmquatation/service/JnInventoryService.java deleted file mode 100644 index c9e0bbb..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/service/JnInventoryService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.JN.demo.jnzmquatation.service; - -import com.JN.demo.jnzmquatation.dto.JnInventoryDto; - -import java.util.List; - -/** - * @ClassName InventoryService - * @Description TODO - * @Author JIAL - * @Date 2024/2/22 9:55 - * @Version 1.0 - */ -public interface JnInventoryService { - List queryInventoryList(); -} diff --git a/src/main/java/com/JN/demo/jnzmquatation/service/JnRegionService.java b/src/main/java/com/JN/demo/jnzmquatation/service/JnRegionService.java deleted file mode 100644 index bfa2ee7..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/service/JnRegionService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.JN.demo.jnzmquatation.service; - -import com.JN.demo.jnzmquatation.dto.JnRegionDto; - -import java.util.List; - -/** - * @ClassName RegionService - * @Description TODO - * @Author JIAL - * @Date 2024/2/19 10:46 - * @Version 1.0 - */ -public interface JnRegionService { - - List queryRegionListByName(String regionName); -} diff --git a/src/main/java/com/JN/demo/jnzmquatation/service/impl/JnInventoryServiceImpl.java b/src/main/java/com/JN/demo/jnzmquatation/service/impl/JnInventoryServiceImpl.java deleted file mode 100644 index 3ae326b..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/service/impl/JnInventoryServiceImpl.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.JN.demo.jnzmquatation.service.impl; - -import com.JN.demo.jnzmquatation.dto.JnInventoryDto; -import com.JN.demo.jnzmquatation.mapper.JnInventoryMapper; -import com.JN.demo.jnzmquatation.service.JnInventoryService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @ClassName InventoryServiceImpl - * @Description TODO - * @Author JIAL - * @Date 2024/2/22 9:55 - * @Version 1.0 - */ -@Service -public class JnInventoryServiceImpl implements JnInventoryService { - - @Autowired - JnInventoryMapper inventoryMapper; - - /** - * @title queryInventoryList - * @description 获取盘具列表 - * @author JIAL - * @updateTime 2024/2/22 10:06 - * @return: java.util.List - */ - @Override - public List queryInventoryList() { - return inventoryMapper.queryInventoryList(); - } -} diff --git a/src/main/java/com/JN/demo/jnzmquatation/service/impl/JnRegionServiceImpl.java b/src/main/java/com/JN/demo/jnzmquatation/service/impl/JnRegionServiceImpl.java deleted file mode 100644 index dc316b6..0000000 --- a/src/main/java/com/JN/demo/jnzmquatation/service/impl/JnRegionServiceImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.JN.demo.jnzmquatation.service.impl; - -import com.JN.demo.jnzmquatation.dto.JnRegionDto; -import com.JN.demo.jnzmquatation.mapper.JnRegionMapper; -import com.JN.demo.jnzmquatation.service.JnRegionService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * @ClassName RegionServiceImpl - * @Description TODO - * @Author JIAL - * @Date 2024/2/19 10:46 - * @Version 1.0 - */ -@Service -public class JnRegionServiceImpl implements JnRegionService { - - @Autowired - JnRegionMapper regionMapper; - - /** - * @title queryRegionListByName - * @description 根据输入的地区名称查询地区列表 - * @author JIAL - * @param: regionName - * @updateTime 2024/2/19 10:59 - * @return: java.util.List - */ - @Override - public List queryRegionListByName(String regionName){ - return regionMapper.queryRegionListByName(regionName); - } -} diff --git a/src/main/resources/application-JN.yml b/src/main/resources/application-JN.yml index 14b6c9a..d9da96b 100644 --- a/src/main/resources/application-JN.yml +++ b/src/main/resources/application-JN.yml @@ -41,7 +41,7 @@ logging: mybatis-plus: configuration: #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 - map-underscore-to-camel-case: true + map-underscore-to-camel-case: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: diff --git a/src/main/resources/static/jnquotation/css/index.css b/src/main/resources/static/jnquotation/css/index.css index 161c8f1..1a3ac16 100644 --- a/src/main/resources/static/jnquotation/css/index.css +++ b/src/main/resources/static/jnquotation/css/index.css @@ -47,7 +47,7 @@ font-size: 12px; } -.el-input-group{ +.form-box .el-input-group{ margin-top: 6px; } @@ -117,7 +117,7 @@ margin: 10px 80px 10px 0px; } -.form-box { +.collapse-box { background-color: #f0f0f0; /* 浅灰色背景 */ border-radius: 10px; /* 可以根据需要调整边框圆角 */ backdrop-filter: blur(10px); /* 调整模糊度 */ diff --git a/src/main/resources/static/jnquotation/js/index.js b/src/main/resources/static/jnquotation/js/index.js index 958ffd0..f2c231e 100644 --- a/src/main/resources/static/jnquotation/js/index.js +++ b/src/main/resources/static/jnquotation/js/index.js @@ -8,7 +8,7 @@ const queryRegionListByName = (params) => { const queryMaterialListByParam = (params) => { return $axios({ - url: '/zmquotation/materialList', + url: '/jnquotation/materialList', method: 'post', params }) diff --git a/src/main/resources/templates/jnquotation/index.html b/src/main/resources/templates/jnquotation/index.html index 1783496..6f0fa2d 100644 --- a/src/main/resources/templates/jnquotation/index.html +++ b/src/main/resources/templates/jnquotation/index.html @@ -15,145 +15,256 @@
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
- 选择地区 添加物料 - 刷新界面 - + 计算数据
- - - + prop="prodCategory" + label="产品大类"> - - + prop="model" + label="型号"> + prop="specification" + label="规格"> + prop="voltLevel" + label="电压等级"> - - - + prop="measureUnit" + label="单位"> + prop="matCostPrice" + label="材料成本价格"> + + + + + + + + + width="180" + prop="varRatio" + label="差异比率"> + prop="wdFSurcharge" + label="盘具运费上浮金额"> + + + + + + + - -
- -
- - - - - 查询地区 - - -
-
- - - - - - - - - - - - - - - -
-
- -
-
- +
@@ -338,7 +405,7 @@
-
+
+ width="120" + prop="prodCategory" + label="产品大类"> + prop="measureUnit" + label="单位">
@@ -399,7 +466,7 @@ :key="index" class="selected-item" > - {{ selectedItem.materialName }} - {{ selectedItem.voltage }} + {{ selectedItem.model }} , {{ selectedItem.specification }} , {{ selectedItem.voltLevel }}
@@ -412,52 +479,6 @@
- -
- - - - - - - - - - - - - -
-
- -
-
@@ -474,39 +495,41 @@ el: '#index-app', data() { return { + activeNames: ['2'], formLabelAlign: { - processingFee: '0.60', /*蒸汽费/钢丝铠装材料及加工费*/ - prodFinancialCost: '0.40', /*生产财务成本*/ - accountPeriod: '1.20', /*账期*/ - acceptance: '0.90', /*承兑*/ - companyMgmtCost: '1.50', /*公司管理成本*/ - bidServiceFee: '0.44', /*中标服务费*/ - netProfit: '3.00', /*公司净利润*/ - businessFee: '2.00', /*业务费*/ - province: '', /*省*/ - city: '', /*市*/ - district: '', /*区*/ - freight: '', /*运费*/ - canFloat: '', /*可下浮点数*/ - kilometers: '', /*公里数*/ - netWeightTotal: '', /*净重合计*/ - weightTotal: '', /*重量合计*/ - totalFactoryAmount: '', /*厂价金额合计*/ - totalActualAmount: '', /*实际金额合计*/ + officeExpense: 0.022, + travelExpense: 0.011, + salaryInsur: 0.394, + otherMgmtExpense: 0.373, + carExpense: 0.010, + mgmtBizEntFee:0.156, //管理-业务招待费 + mgmtDeprecExpense: 0.016, //管理-折旧费 + consultAuditFee: 0.026, //咨询审计费 + tenderCost: 0.023, //标书费用 + rentExpense: 0.052, //房租费 + salary: 0.239, //工资 + inspectFee: 0.016, //检验检测费 + transTravelExpense: 0.020, //交通与差旅费 + otherSalesExpense: 0.073, //其他销售费 + biddingCost: 0.134, //投标费用 + bizFee: 1.183, //销售-业务费 + salesBizEntFee: 0.098, //销售-业务招待费 + transpHandlingFee: 0.621, //运输装卸费 + manufDeprecExpense: 0.217, //制造-折旧费 + interestExpense: 0.436, //利息支出 + handlingFee: 0.108, //手续费 + discInterest: 0.363, //贴现利息 + otherFinExpenses: 0.197, //财务-其他费用 + invOpCost: 0.031, //存货机会成本 + tax: 1.5, //税金 + totalFinExpenses : 0, + totalFactoryAmount: 0, + totalActualAmount: 0, }, + materialData: [ ], - regionTableData: [], - price_0t_5t: '', - price_5t_10t: '', - price_10t_25t: '', - price_25t_100t: '', - price_100t: '', - dialogRegionVisible: false, - regionName: '', - regionCurrentPage: 1, - inventoryCurrentPage : 1, materialCurrentPage: 1, pageSize: 10, dialogMaterialVisible: false, @@ -516,35 +539,25 @@ precMaterialName: '', vagueMaterialName: '', vagueModel: '', - dialogInventoryVisible: false, - inventoryTableData: [], - clickedRowIndex: null, // 用于记录点击的行的索引 + validationErrors: [], // 用于存储验证错误信息的数组 } }, computed: { - getCurrentRegionData() { - const start = (this.regionCurrentPage - 1) * this.pageSize; - const end = start + this.pageSize; - return this.regionTableData.slice(start, end); - }, getCurrentMaterialData() { const start = (this.materialCurrentPage - 1) * this.pageSize; const end = start + this.pageSize; return this.materialTableData.slice(start, end); }, - getCurrentInventoryData() { - const start = (this.inventoryCurrentPage - 1) * this.pageSize; - const end = start + this.pageSize; - return this.inventoryTableData.slice(start, end); - }, }, created() { - this.getInventoryData(); + this.calculateTotal(); }, + mounted() { }, methods: { + async init () { }, @@ -559,67 +572,55 @@ } }, + calculateTotal() { + this.formLabelAlign.totalFinExpenses =parseFloat( + ( + parseFloat(this.formLabelAlign.officeExpense) + + parseFloat(this.formLabelAlign.travelExpense) + + parseFloat(this.formLabelAlign.salaryInsur) + + parseFloat(this.formLabelAlign.otherMgmtExpense) + + parseFloat(this.formLabelAlign.carExpense) + + parseFloat(this.formLabelAlign.mgmtBizEntFee) + + parseFloat(this.formLabelAlign.mgmtDeprecExpense) + + parseFloat(this.formLabelAlign.consultAuditFee) + + parseFloat(this.formLabelAlign.tenderCost) + + parseFloat(this.formLabelAlign.rentExpense) + + parseFloat(this.formLabelAlign.salary) + + parseFloat(this.formLabelAlign.inspectFee) + + parseFloat(this.formLabelAlign.transTravelExpense) + + parseFloat(this.formLabelAlign.otherSalesExpense) + + parseFloat(this.formLabelAlign.biddingCost) + + parseFloat(this.formLabelAlign.bizFee) + + parseFloat(this.formLabelAlign.salesBizEntFee) + + parseFloat(this.formLabelAlign.transpHandlingFee) + + parseFloat(this.formLabelAlign.manufDeprecExpense) + + parseFloat(this.formLabelAlign.interestExpense) + + parseFloat(this.formLabelAlign.handlingFee) + + parseFloat(this.formLabelAlign.discInterest) + + parseFloat(this.formLabelAlign.otherFinExpenses) + + parseFloat(this.formLabelAlign.invOpCost) + + parseFloat(this.formLabelAlign.tax) + ).toFixed(2)) + }, + handleDeleteClick(index){ this.materialData.splice(index, 1) }, - selectedRegion(){ - this.dialogRegionVisible = true; - }, - chooseRegion(row) { - this.dialogRegionVisible = false; - this.formLabelAlign.province = row.province - this.formLabelAlign.city = row.city - this.formLabelAlign.district = row.district - this.formLabelAlign.kilometers = row.kilometers - this.price_0t_5t = row.price01 - this.price_5t_10t = row.price02 - this.price_10t_25t = row.price03 - this.price_25t_100t = row.price04 - this.price_100t = row.price05 - }, - searchRegion(){ - if(this.regionName === ''){ - this.$message({ - message: '请输入你要查询的地区名称', - type: 'warning' - }); - }else{ - const params = { - regionName : this.regionName - } - console.log(params) - queryRegionListByName(params).then(res => { - console.log('queryRegionListByName') - this.regionTableData = res.data || [] - this.regionCurrentPage = 1; - }).catch(err => { - this.$message.error('请求出错了:' + err) - }) - } - }, - - handleRegionCurrentChange(val) { - this.currentPage = val; - }, handleMaterialCurrentChange(val) { this.currentPage = val; }, - handleInventoryCurrentChange(val) { - this.currentPage = val; - }, - addMaterial(){ this.dialogMaterialVisible = true; }, handleSelectionChange(selection) { selection.forEach(item => { // 判断是否已经存在于已选列表中,避免重复添加 - if (!this.selectedMaterialItems.some(selectedItem => selectedItem.materialName === item.materialName)) { + if (!this.selectedMaterialItems.some(selectedItem => selectedItem.uid === item.uid)) { this.selectedMaterialItems.push(item); } }); @@ -630,7 +631,7 @@ const isSelected = this.$refs.materialTable.selection.includes(selectedItem); // 从已选列表中移除该项 - const index = this.selectedMaterialItems.findIndex(item => item.materialName === selectedItem.materialName); + const index = this.selectedMaterialItems.findIndex(item => item.uid === selectedItem.uid); if (index !== -1) { this.selectedMaterialItems.splice(index, 1); } @@ -667,12 +668,11 @@ const params = { precMaterialName : this.precMaterialName, vagueMaterialName : this.vagueMaterialName, - vagueModel : this.vagueModel + vagueModel : this.vagueModel, } queryMaterialListByParam(params).then(res => { - this.materialTableData = res.data || [] - this.materialCurrentPage = 1; + this.materialTableData = res.data || []; }).catch(err => { this.$message.error('请求出错了:' + err) }) @@ -680,35 +680,90 @@ } }, - handleInventoryClick(row, index) { - this.clickedRowIndex = index; // 记录点击的行的索引 - this.dialogInventoryVisible = true; // 打开选择盘具的 dialog - }, - - getInventoryData() { - queryInventoryList().then(res => { - this.inventoryTableData = res.data || [] - }).catch(err => { - this.$message.error('请求出错了:' + err) - }) - }, - - chooseInventory(row) { - // 在选择盘具的逻辑中,将选择的盘具信息赋值给之前点击的行的数据 - if (this.clickedRowIndex !== null) { - // 假设选择盘具后的数据存储在 this.selectedInventory 中 - const updatedRow = { - inventory: row.inventory, // 盘具名称 - weighInv: row.weighInv, // 盘重信息 - }; - this.$set(this.materialData, this.clickedRowIndex, updatedRow); - } - this.dialogInventoryVisible = false; // 打开选择盘具的 dialog - // 其他逻辑 - }, - calculatedData() { + /**-------------计算财务总成本---------------**/ + this.calculateTotal(); + /**----------------------进行盘具、数量、人工、水电三个数值的验证---------------**/ + this.validationErrors = []; // 清空之前的错误信息 + this.materialData.forEach((row, index) => { + const wdFSurcharge = parseFloat(row.wdFSurcharge) || 0; // 如果为空,默认为0 + const laborCostFloat = parseFloat(row.laborCostFloat) || 0; // 如果为空,默认为0 + const hydroCostFloat = parseFloat(row.hydroCostFloat) || 0; // 如果为空,默认为0 + const quantity = parseFloat(row.number) || 0; // 如果为空,默认为0 + // 进行数量验证 + if (isNaN(quantity) || quantity < 0) { + this.validationErrors.push(`第 ${index + 1} 行数量不符合要求\n`); + } + // 进行盘具运费的验证 + if (isNaN(wdFSurcharge) || wdFSurcharge < 0) { + this.validationErrors.push(`第 ${index + 1} 行盘具运费上浮金额不符合要求`); + } + // 进行点数的验证 + if (isNaN(laborCostFloat) || laborCostFloat < 0 || laborCostFloat > 100) { + this.validationErrors.push(`第 ${index + 1} 行人工成本上浮点数不符合要求(应在 0 到 100 之间)`); + } + if (isNaN(hydroCostFloat) || hydroCostFloat < 0 || hydroCostFloat > 100) { + this.validationErrors.push(`第 ${index + 1} 行水电成本上浮点数不符合要求(应在 0 到 100 之间)`); + } + }); + /**-----------------------验证完成进行运算,验证结果通过才进行计算--------------------------**/ + if (this.validationErrors.length === 0) { + // 遍历表格数据进行计算 + this.materialData.forEach((row, index) => { + this.validationErrors = []; // 清空之前的错误信息 + + const redBookFacPrice = parseFloat(row.rbFacPrice); + const materialCost = parseFloat(row.matCostPrice); + const wdFSurcharge = parseFloat(row.wdFSurcharge) || 0; // 如果为空,默认为0 + const laborCostFloat = parseFloat(row.laborCostFloat) || 0; // 如果为空,默认为0 + const hydroCostFloat = parseFloat(row.hydroCostFloat) || 0; // 如果为空,默认为0 + const quantity = parseFloat(row.number) || 0; // 如果为空,默认为0 + + // 进行其他计算 + this.$set(this.materialData, index, { + ...row, + varRatio: ((redBookFacPrice - materialCost) / redBookFacPrice * 100).toFixed(2), + totalFacPrice: (quantity * redBookFacPrice).toFixed(2), + totalCost: ( + (materialCost + wdFSurcharge + + materialCost * (laborCostFloat / 100) + materialCost * (hydroCostFloat / 100)) * + quantity + ).toFixed(2), + }); + }); + } else { + this.$message({ + type: 'error', + dangerouslyUseHTMLString: true, + message: this.validationErrors.join('
') + }); + } + + + // 计算厂价金额合计 + const totalFactoryAmount = this.materialData.reduce((sum, row) => sum + parseFloat(row.totalFacPrice), 0); + this.formLabelAlign.totalFactoryAmount = totalFactoryAmount.toFixed(2); + + // 计算实际金额合计 + const totalCost = this.materialData.reduce((sum, row) => sum + parseFloat(row.totalCost), 0); + this.formLabelAlign.totalActualAmount = (totalCost + totalCost * (parseFloat(this.formLabelAlign.totalFinExpenses) / 100)).toFixed(2); + }, + + /**----------------表头表单验证-----------------**/ + validateInputRange(value) { + const number = parseFloat(value); + return isNaN(number) || (number >= 0 && number <= 100); + }, + validateAndSetDefault(model, field) { + if (!this.validateInputRange(model[field])) { + // 如果验证不通过,设置错误提示 + this.$message({ + type: 'error', + message: '填写错误,范围为0~100' + }); + this.$set(model, field, 0); + } }, }, diff --git a/src/main/resources/templates/zmquotation/index.html b/src/main/resources/templates/zmquotation/index.html index 57cddee..f14ece4 100644 --- a/src/main/resources/templates/zmquotation/index.html +++ b/src/main/resources/templates/zmquotation/index.html @@ -519,7 +519,6 @@ dialogInventoryVisible: false, inventoryTableData: [], clickedRowIndex: null, // 用于记录点击的行的索引 - materialTotalRows: 0, } }, computed: { diff --git a/target/JNDemo-1.0-SNAPSHOT.jar b/target/JNDemo-1.0-SNAPSHOT.jar index 30282fbaa96a53ff7c077eb96d18ff34a2808919..a82d0931fc96e8672f225e77b2709f58367ced6c 100644 GIT binary patch delta 13211 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�{d1xJle1 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 IjJKly13|<_ApigX delta 13429 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 delta 4831 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 diff --git a/target/classes/application-JN.yml b/target/classes/application-JN.yml index 14b6c9a..d9da96b 100644 --- a/target/classes/application-JN.yml +++ b/target/classes/application-JN.yml @@ -41,7 +41,7 @@ logging: mybatis-plus: configuration: #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 - map-underscore-to-camel-case: true + map-underscore-to-camel-case: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: diff --git a/target/classes/com/JN/demo/jnzmquatation/controller/JNController.class b/target/classes/com/JN/demo/jnzmquatation/controller/JNController.class index 9174e6b79afb865ac43583f2930e7a49e5333bb9..bf2091ce7455dead44925e96854aa56c33bd33e5 100644 GIT binary patch delta 568 zcmYL_O-~b17=@qt>a@eON-1EefZ#V2#zIj9MPt|q8W${FxSB-MV2}kRCK?UlCp33Q z+^Y){2`NAJLlZpTjQQ-= z&8q*z9Jy;zF?pA6zu8((H_Wp4+SG&n+66Ag^bm*Ki<#$s$U@8_4;&iiztbp&Jd9c5 zQA~lz?B@DSC;Vcbhs)+e{zVe#t>7|bqhi=rI26Tl!jjMv%0>TPGg=tfDWArmN}ssR zM{`x^7di|uh)=KhCt)D0O#H%~tWW*M^I7n#{vrNP=^nOMB!5WcHJ9~kc56=ishUf2 zvK|$^v$~U|SExz!RFvZ~!!jCCf_+L?8I^KHO3_m_szU|3>Xei;rZfHur_EKaNgKCA zUbkXf`Db+KoYu6d8+Hp%v(an=`xVN;A-My>eO;Vv9=kWR1DBgZms^=@S?sp%6N+}7 GCr<$81V2vz literal 2985 zcmb7GSyS6q6#gzY7;LdQgoMx~p;_1xg|%rQBtS|NY6yjtmeNhOFOH}zfh5Dw<*g5S z=vyD!$ziC@Rd}o#Z`R~c!00yxV zMFYm`pkN|~N!%2t*K08q!yC92#cfOr$(u1GFe6U0G2Fpi1aCz#kA(>CGK35(!w^qc zc1CrKmBCdtVP!Jh9$~1rc}BO)1#WNXDb6sENLg8RdR9&Itfj7+pJvx{nya~_qdHPa zoi^u-jR>V}K4-dmmM`j#o;3KlXSfEqp$)a^1m!m1h7P2C-% zw03qaGK43sG$pPvp__a*mrZi}u0}cV@}1I*MU4WW`@Ash-qR^5how1XnXYXa2DhmW zlfjM1$9j(2TQd0x-EkStbtYD|4NWyPGovoJBF7_LeqdC|ER}7ZETgi_vy^^8Y@bb_ zAz_=OM$Xj@RY(Y-HDMJ;v$f_&bgfKx)OTN@gVL@Qbk9xK8W|(trWx+uv(j^#=nX12 zWoM{j%WU$bn$*p7aktD_jyt2Rt%Sf)5pZgpU=Rz{v1!&ii95+vo}zto2;2cr z2ZrNbvlO=0#FlL1vlXVKtE@Z3ekgxx(aP1$6^r3Q1%RTVlAK4xj&96n!QY4s5hs^Q zafg;o$qMyt{2k^S5RZX_Gg%1TADrMRb8_E$nAq}G2g9wy>F2k3Q9!|d_v%u-oClA> zEtsQ#T%0C$AJ&QTd{4=TG(%m6yYj`MENhd7<~a1+DYqQK8G0dUpx2l%PKg$$6GY#G z;TWB2=-T4RsDby%sE^BJ)pSpzL*MOWrP7trwYvKcuwUp<@yD9_>?kvUIVf`F7Y0?yr-UEZdF$0oz$3s{jB1 diff --git a/target/classes/com/JN/demo/jnzmquatation/dto/JnInventoryDto.class b/target/classes/com/JN/demo/jnzmquatation/dto/JnInventoryDto.class deleted file mode 100644 index e09c215006e0a3a52e19ed1c4ea03f1dfc6fcdba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2477 zcmb7GZBrXn6n<{9ZwU*eDKCxEN);{du@tq27qvhY3KXGGTWfU*J7h8JVzQyy|Ik0+ z50Ec>&>5vOI^*b#quu$X{~ zB{|%Z!?KQ*BTN$gTQrYp`&Bb{Eu_Vww=ecFya{VookRKtCaNI-N^}W(}0_o*F>(I&;Eq6D& z;g=kDcS=AfVBRk01&l|wvs+kn4+XSo$94Q!f%xFimVh$n?brgH%Z_WWR`$2;(j9BN z$d&Z6mnRvEl;}r`ieGTb0^`ehZ$G=Vn%%MYz3iU*c>kM<qm zBNKDi_G?Q5U4uid_$EVCNV$#9-5P7N+>oGq@NB$1O=`vV3*OF}RkHSNpF#>G!^kKp zoqAHuCha0I4e4%g@7Z~OYUn=Y_ZpRrwggnqFW4o44ynfgWvLtH_crlHA(*;>rTq)7DCM zxl;5g!)Z>2bi(H+2I`M8d@t-B!Z*B1DR19&WGkF+tmn9FH50F)-^8ovGjUN4m(V9L z`hWVu#0=gx@fNO_$VzKaT0?S}#Rmet%`JVS;uLqJ?3qSFgS7(8nD_z@Nq@9II^m2! z+h~9FjP%5iiJQ2>Ua6-K>&m_imK-m;5xj}c%LioGR#~=!~^a8GqT7vM{xj7lV}Jty3y5n^M-emhw`NlARwO zTwLdz-~pbD4F3RCIUe~F>i1CN$0L70T^Sudffl$l^wm)gIc4lGv}KfMIClhdETf#j zs3HtkLoHnavze+(Bd8vegGMk{qj*v>qgT&4pBy1$Lb`X{H z#4XH`b(}BO1m^iuc!Bm} zftDJG`3TwzE+`aJ2nxvm9$pY$_hWLQ8)_9$#VCzS5llM;t0S9N2_{WmwV`%+NUHKK xoBR#ty{BkTcbuS8O2{dl3hjin&xLkU+G!3aINyASoWA-dBWVQtOP2VP{{VB&ta|_e diff --git a/target/classes/com/JN/demo/jnzmquatation/dto/JnMaterialDto.class b/target/classes/com/JN/demo/jnzmquatation/dto/JnMaterialDto.class index 45867fb499742695cd4c178730eb0664915b2c54..ab6a0857f73b76ea1887893e4e555aa8daab90a1 100644 GIT binary patch literal 7007 zcmcgw`+po&6+buG$L#LxBb)3dlcptv1=1uX*4IZSZGomOq$X)>Xc2s|O{UGZo1L(` zsZw9~exf2MS`q4tDpn~qJM!u`%$dlbLZ~v%y!x?zsRSYd+s^k z^PRc(o^$SO&i?o5=ZNU_^w%h@r$?f6guW4>Bz=>`w^)3e#dlad%Hk-C@3QzFi^o`e zpT#j2KM2zgqZl7&ahxfiVC_dNe$3)Y7AIJ&usF%$DHf+#Jk8=67SD3*Pr~$El&+vh zG?o+2#iNqY`ElgIvG zu8e`|LZKpP-Q=9TIJ$j$blzIDNB5TwE#9@9ugWEj&R6Zx?WHMf1n=yYs?E>bXH|Fc z&UFp0b-h%5?~?G(c($)*Y3!f|%#^c z!x)u}s%m2nm71lctErGX9Y~WkA)&4sPdYG{CFMNGeOevraUPok^PHi2ac`q=R;b#8 zY6%MHH98MgHs{3EgFUvSe6YL0q@34to8q(8{M>=5{F3Yw==5l?g0#7OX)C7#)P;Oy z!D%(eiaQ@r%%%Xoo=T)blT6_ z6iw^2gT)Msx3JjBVwT0NEOxQj&Ehr|Z)Ncr`mCVt=BsY=a-lfSb(;1pco65cQKy&b z&**0({qAGiShv&;4i;^sUmhLQ)JVVQ@LGsX#(IzF~EQ)xR21WxDU|@awReh z@sa+m>36z}eDA*?7uV|a5KZHa8jE(?6K*bPD%hj5@?I+(a&F0v22yoFWbr}% zYS^(?PLmZRZbKImJe66cqaM9H8bS1u*){~&u zQk;6}b@-SQ^agy&w9y;!KXOs(NJlv$Bjt#slq2#|jz~>8B0J@X1eGIlRE|hfIU-Z# zh(yP@8qY%hL*9bf7@j9E#)nRl7z#W^Z6~Px2??KojKWQnpa2chc4)c-rZ>|hW`a{# z5shMGqTtYz6gUp0jhG-LjcHeKupW%m_X!R*2Y2}fqhx%7L(Rci-(ZxQPjI+7xW_jb zCF&EbH3#?l2BWlnf+NkreZIkH2|mHm=HNBH!DuBu!LjDxe&1lUAfI5pIe5S~7_G}E zINltb^9@GJ^9fEg2VdhGj9%*#+}<4Q&h18ezK!0FB<3P9F>)P*hK5g2piv!8awp`Y zvkpQfHzz)qv7mP#E+{ZbVe(FY%3!OM+!5-OrlfqAKV_&@N^UN7$}vfKr$1%5RZ8wt zb;=ErGVf2RwMxk?uTHs9Qtt7mjI>J0-Lp=)Nm9=FQ$|~*8TK<%JtCV~_)G2S0lzaUtKiO;e}bEGhT-QzlxaOmd0F*JKMub681&SC^7bt7S0Lq%W5o3_9K+s&EZZi&0x0x{F3`!_a+(@`UJ!TT1 z9y4Vm8I)3>q>*xg46_3u!%Q0;3`#3dhmm%Hdd*INdd)7QlR;ey)M<3NK QK&#BG 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 diff --git a/target/classes/com/JN/demo/jnzmquatation/dto/JnRegionDto.class b/target/classes/com/JN/demo/jnzmquatation/dto/JnRegionDto.class deleted file mode 100644 index 003edf0e71cad2f360110010f1cbbada6bb5f40c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5361 zcmb_g+jARd75}ZR%Su|=vTQloCQTgT()f}p*S1+Fg(glz(l|9qYe;EB6?w6h$dW6s z0}bI?XiK@Y<XQlk{zrXwqfIWCQi<|LS201(~;t3I-5%Hvm&x-h*h|i1of{3Tmcsk4V z84+I;_b&G-ye@96lhXy4QE zeH}m0aaqR|9Y56ZBiVj2jUT6RRYPIPZq+LF8N0PqYc}pXI;lZBrXhc**;sNa4QHlO zU$&Dxnf#||&=*_H3$;eo)=)ftu5zJLu2&j!mZ36&{|tx0!I}YkbJD z$T&cPi6kbsnmnD8~xC>3=XJK7=$^CZ?5Z;{azE?5*e|fIqh=!vV&5!mh7Y8iyt8g!7f9dAIr4iAR~#>61sN4m0b-sg}L8Tz6P{ zZK=!*hgnMwyGhCnhxyQH_s;G^p3{dslMng)KIF6NPSfo}7RagQa;s|JRg)1=i1hI- zGRh2Cm@se)$_93b*ePNcb{m}Qdkx$w;x-Yti`WMSA6fILFyP>Q1`gvc1NRHM69)|( z5-};_2;ODjsEA`C?iO)e#4;{uSl2mg4=&g0vr?s{$T7D02|QrnC-^A`gj zKICVTT7G;etZPMniP;$+@)Ar&pzMk&yQ9jUsIr%eHe%pW9As+4r**qZ!+_eVHOr^e z3#WF`ox`ch;-cM{)v!G}B)qw~dX##n=GblH`(3?iboqR2;p_5dXxN4%uty^2!zFt*ez6uU6i@T6z6yWd*2}MW9yJfm&G#T-PxsD~NJGwK7+YYjX5eXg^c5 z1C%MX*^4`f4VQp-;GNVosR+t;=bxkNWg5E>I`_vqvyx(*yE~mrvCgc(80SQ%^SW4P zmUN7BveVg&b!OSeIHx+DH^e%#U1FTmoz6GLI zqB!3Jj$Z zwws9+^!SWkD@jVPl`@mUNxg>R739sNnTn7KR+^-OrJHFX=^iO<>Jd_(l_9Cm%9D@Rh%GR&Ni439(#qVB$JJOT>6)>r1c!;2N&ZySmmqu>! zEz$iPLl_M7ufoLs!~xYH8w(TjY!AIKb_MC}D_HlC?Dtv;F_;O@qD#}brh=7JCiaVR z(#@oA>a$YHlnPAjBG;>ErIm>dkl;@T4O(iR?qP&CV|YPw*AEiLc?*&k%6QXIVYIjAF(Av0KbG7s#buV9{93s5 zE37~LD$L>yE7%}S$)&i_#hmgRiZ{BrPw*xe=U1?~IOJju`OU>GF76lnHWzcQZ!T_i haY^v7iw6bYM7)BxcYgnj{z$pxwTgyMsiE}g{{bgEw>tm; diff --git a/target/classes/com/JN/demo/jnzmquatation/entity/MaterialEneity.class b/target/classes/com/JN/demo/jnzmquatation/entity/MaterialEneity.class new file mode 100644 index 0000000000000000000000000000000000000000..8689475b79a8db77d6bb798ee9ff200428d5a2cd GIT binary patch literal 4100 zcmbVOS#uOs6#jbBGu<=kSuzkp3o1*LtPCJ-9Y6$vfC(T$R9v9RG|9kZCQLdg?uuLa z;PPaZ4?aqjMU_iQs8Y+)7p(HxCw=l)_#*0edYj46SkbDfbH97fch0@{-0$A$pa1&i zdjMPUP6lf*l|~xVVk%+e32F$M6XS}R7js_BvtphT$^{M2 zXRsVoI$n_WMIA5ccv;6QI$qWBnvU0XTolh68s1cpoUfEmY*J7hJ7b@>OI5ozRhn=c zmD<#Zf>ha=n-#AQHiuw~0&S*VcB$Lf=I^_bnLNIw`<-Ra7lg3V)-^_kLvgQc=FQ!kyVJwJ19-ga%b zQm>Vqnp<%%l*Vn>VQ6)<=CI54>Qj#UsK1}(ef@DeN|UiC*i?kM^ayin8FI$M-8DM_ zYa-aAJ{Qf^-FM?uvhTvU<4)JhhwX+v<8Z0mRhm)J{2`XiA(r`xoAXDVfECW4a#)Wl zQ!bkQ(5W-dq&w1oT!B(we5!$qM_zZQod)NTLiYye-{}oTJSn4%?kIJru^@HW%}%)X9F0j;C&Y(yon4ov4jz zdv4knB2~GcWjK6f|M)2DM4W0kbMsY~AgqAa8*Vp1TtI-h5xqBBbO=3vxEkH9`BBk&rT=&%3_ONi1~y@{ zfd>U`5pteuvih_1fOV zn_KV};>^&RplYq1faO)~S^h49DHL8!ln6^byuJ&8HF2 zkdQhPC8X3|%W8Wq3+}b7x!1DnUdzg}T?R#tiFS~^5?h6Ba^NbIFFo22ZOR)oFidRt z1Z*T3#5@Gr#lc@A@kLv3J~o)=78Bgj9$bhG=6S~itL?#EvBA_yOmMP2xELEueZ>T) z+Jl$H22+=f7;iBH+F)RZFDDCK%D<+k{g>QYmR?xU2wUdrw9DU(Z0DOV^;d54#BM|{fE zQd7!pj8fj|rFQRB2c*Y`1{RRNRv-f-!8W3ot@P)=H9+wNhqM zIH_wWUP9JPnyD62&eBNAS-PnSNe@Vxske~wR+^-|l`+#o$^@jenQ0*vtWJ^&mSJ`Z z$p}b9Eu=0hOH!AWGqXa<1*EK*Yatb_JV`~XVCIEX2uOLe5R%l(yfGbUe@HL;#S8D3 zvKG6sht=*@42<$|P4NHnI`(p`gYWYnc!)@){T2I&k{HJ?*iV!~6<2V8NJ9gk<6$Bl zAL0Xy5vB1F-X(VrGFZS_93<+*cW`is$iQ!$;V@AazhfsJAsX=T7=OBQoueL1|6dqBDZ4q3Du3<1z^Gk?h_8((ONyAdp@{w? zl?;o>vW#-Mkz_|b$@2f7LwxrVUol07iGD1MY*V*;!dzV#nWilD!r&!n!wXn;QpU5E zDh^W(Ji3V0cjc_4=b}!%Al*!cuDq4Y5ZV;t~t}aXWTzcf9oc*Yx zmG)dzauAjFT&v?Hb=u!tP>l|JkK=ffTTk-9pCXdYU&Yg`PzOH~KEX3YDt6!^P7ozo zrfHlcO2MUMY$6Ts^W*9ik&e&MgGr*ah(Vb`?r#pL6oaBr08o^_nYP(a$UrxeAtB_b zi-!VQs)g2MwvPs6Z85pYk8uPc`VAq?sCZuxn2rl<#@^H&glBFN-pufC3?||6@vG6- zFW%!3%J*6MTP%O#D!Pj+7SJOyW>Z}0B a3cihI0k^k*Q?!2ml>><>d`IM3p8f|pFq5GG literal 0 HcmV?d00001 diff --git a/target/classes/com/JN/demo/jnzmquatation/mapper/JnInventoryMapper.class b/target/classes/com/JN/demo/jnzmquatation/mapper/JnInventoryMapper.class deleted file mode 100644 index 5bb34a33c48544fd8961e87e0e228a4b73cdb362..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmah`+e*Vg5S^{P*s8VoAo!LiQIIYc-ztKa7A&cSR(vTXY?7tjknE<(rqbe<`QQim zQQ{<_S`=|%cbPe7E@$TbS{%M@~g(3R_!ZHcr;9; z76E?}v9Nu9Ev3o>Vgkpeil&r>%$ad2Y|Il=_D!H8?sF&Ys_wdogajipP|oOOlKBmsda~gzA;_}7LUT#q&aqN zg|A~>6ChB)eFKmpfh{PaRYI!(WvJj^M|>M^bqpki8v1uKbT>oGi0lD;0yDv=bN~PV diff --git a/target/classes/com/JN/demo/jnzmquatation/mapper/JnMaterialMapper.class b/target/classes/com/JN/demo/jnzmquatation/mapper/JnMaterialMapper.class index 7b1562c84f997ad868afa19e74d395e5d4aa1f6d..c1056d3ac0c090c4f8172278b2dfe6b5a6d43610 100644 GIT binary patch delta 361 zcmZ9H&q@O^5XPy0LGc{|;!VU?&?Uvg`iEBW5W+G|#u80;*6eJ-Q}5oy=THP+&ZFrz zjo=)HFW>i@A@gzYy8rbySPVYLvXsTGP@S{YsTOBr5tY~zeH|-{ZIk>akS&05O5r8v zGqUIt(CeJE4Vn}zrF(D&*ioHM+y*ZOMvXlHf$cew={zt>J~?f?J) delta 580 zcmZva%SyyB6ozqTH{v^F>A--`;FLiGwb1dhkRhZ=+DS>1nw+_`3%hqG^BjWUL%8-) zd;`-9*jBR%3t2lT4kg}dxk(55*k+A^P+P95TYCOkf?J0j7x5Z9 zs#EvoI4o*^3q&zuSf}XX@AplEnsGTPd!5B`qsurIk)Q;GR(&zcYr=&F5)V>SnKXJg zyFXn6gSHA9+*qm3GH!55wX*&G<$xq^K0<9$CmEt9wk)axHKr1;9c7`Pxp<0J?nNzd zlH!PWQV0Io1HQSto-cyaDe~{#<{QQh3iIFJFh%D}6zJV$HOIr}cy{<6KYw`Ri_s5> CIkBSv diff --git a/target/classes/com/JN/demo/jnzmquatation/mapper/JnRegionMapper.class b/target/classes/com/JN/demo/jnzmquatation/mapper/JnRegionMapper.class deleted file mode 100644 index 0449dac26e2a2df9536ba1315650aea58af3d5de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcma)4O-~y!5FJB4NLs$dp*J6(X*pm;;ub&xAr4UjEs=WZp_=Rt8;4zc@p^*-;xF_E z^}r9{MabRabpcy9Il1X2McSI4&iu*r91{|- z{iQd?391-Pqz2w;6Lr3pt=#Ka&9EH-Ykl$~8-7E_r#!h#K+_duB~4?XBZEG7O!@sk zC=YspO;q<>g_Kw|Hh0NQjvhU$Q=zx2Yf7o7-gb`o{!f>=@j9U&I@80Lj*YP;nuUDs zSr;ixF&L53Lng@-&H-vbF$FUd)d|Kq3;dlG9l0y7oK0l#D~&NAiSl+tj%53=EzyJ$ z_flsk+VCjW*Cbmz+xK(N4?8Vs9fJbxr~d?m9HG;Je+$G>4s7lMI@2+$+x+Xjk7-J7 zZ}vRzn=HX>QoS8)QV_moTOQ%JoqvFf;h3YU2@tTr{|7)+1S~>@tIE5ofEq7#t_4_v b2Cpj&ZE}712_l1!++QxHE5)?NlU0Bh{&2*A diff --git a/target/classes/com/JN/demo/jnzmquatation/service/JnInventoryService.class b/target/classes/com/JN/demo/jnzmquatation/service/JnInventoryService.class deleted file mode 100644 index 57523f1a806e41b8730635fea8177f4ad78e41f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmZ{f&1%9x6ot?AFDBhcH+==W>1^C7E=nmV!7lOyV;p2cGDF5Yf%MV3@Bw@%>G*>P z;_jZqx!=9#aQxc?nBXNs93dgR)?T@GVH#!Fx;E824(9khEo38wXI+YuHzmZG-Wti? zDZ=MNV3y{#63dm?sLG1M{8qJ>ELmG4Hf+Vx+-`iaoz4R=$*gy|`qpJ2zTE{f9A4pSL_`UIi1N~$)|QfJckXglx#JQTuP z**GC_h+@Z|fA*Kpuk{B2+`vf$M-dz&oXrFIoB9tlvZ=_f_(W0@;1#~qoy-eP~%i( zSIs&ETKLibqoy<(xxyZiu&%RUU5n6%yBxEUj-5p zf(L#8KMHY^R;6fk@DN}7=A7$uuJ4bZ-@XHAqv@l9%__>cyM`^?^Kjq80}tB_>q?KM zcE(O#i6oJhp&f)K=Eo;|AY;Qv`a^t{2`8K~n#To(AM2w(SsjMWH<@-SmOYiKek2dI zHd9i{@HjAb$kW6sJv_A{mgmO4=Y1)3%1=d@-_FIHzz;KL&Xtt|Dtl#LY2^+WR$4nf zhVpYWkfb_LTApNaU)r~VZeyqiCKORmSe2h=$+CN===!IZI7+1*t59+kC()v>?lgZy zX;M)?%cPymO$RD`KYGNl zQM4iwddOe*M>3=awf|l6q92Aw%W2Ez4^5iw3TRyDLvD;>m3H~rr&yv$o@u>GCr&ZP zRd&CCeJXxmqjgGdV4e0klmOVkb&B-ZXi$-y+@6vB-Ong}#R|hm%9ilELUW;lKdW$~ Qz}zIu9e)az{(z6vBH z1P^=wAB7n2hO~lScvz2T_MDkHv$H>ceg6UA306wT<8~1_+$rNO?iFyqfTaSK87fxx zmC@T`G?JF#aWgO>-)ixm3=JRXkKsWqoNxr;VS?dXdiMmS!LYa+Yo|ilQIYBn<)+pq zWkd{5o5uEeG_p$f_pAuzk+C0mR|*~RJrOu#$6QPad^2|DNLksVw3pVER&IkKTVL%k zz+@^}$i*bu2Fs#&@192$$Q0P8yJ1?%WnucPhhTLO`UP@=1a;pDQ7-qMn z+c&*;!jHyDODz}Ms;`BME!Elik2>c`>^U=4_R5*YhHt8EVjIZU%Fk}$&&NEW`;nK% zP(Ss{MbxA;Zak8FLTOY`Mx}xRE*J2if+}hZ&(7YWi^fhvIiBs??mz~P*7D+fe<@+$ zXLC;7WGvDDkq0dvJ@9(S7U|~w64?w{l1k?l@;F(K%ddR}`<%SKN@q&0VTSG=N&w8_ z8d=&@)R0Zc&na1kV&%0j$UOXpYzCjm&EPo2a*|>`g-ucr0oO4{spfrRMh { const queryMaterialListByParam = (params) => { return $axios({ - url: '/zmquotation/materialList', + url: '/jnquotation/materialList', method: 'post', params }) diff --git a/target/classes/templates/jnquotation/index.html b/target/classes/templates/jnquotation/index.html index 1783496..6f0fa2d 100644 --- a/target/classes/templates/jnquotation/index.html +++ b/target/classes/templates/jnquotation/index.html @@ -15,145 +15,256 @@
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
- 选择地区 添加物料 - 刷新界面 - + 计算数据
- - - + prop="prodCategory" + label="产品大类"> - - + prop="model" + label="型号"> + prop="specification" + label="规格"> + prop="voltLevel" + label="电压等级"> - - - + prop="measureUnit" + label="单位"> + prop="matCostPrice" + label="材料成本价格"> + + + + + + + + + width="180" + prop="varRatio" + label="差异比率"> + prop="wdFSurcharge" + label="盘具运费上浮金额"> + + + + + + + - -
- -
- - - - - 查询地区 - - -
-
- - - - - - - - - - - - - - - -
-
- -
-
- +
@@ -338,7 +405,7 @@
-
+
+ width="120" + prop="prodCategory" + label="产品大类"> + prop="measureUnit" + label="单位">
@@ -399,7 +466,7 @@ :key="index" class="selected-item" > - {{ selectedItem.materialName }} - {{ selectedItem.voltage }} + {{ selectedItem.model }} , {{ selectedItem.specification }} , {{ selectedItem.voltLevel }}
@@ -412,52 +479,6 @@
- -
- - - - - - - - - - - - - -
-
- -
-
@@ -474,39 +495,41 @@ el: '#index-app', data() { return { + activeNames: ['2'], formLabelAlign: { - processingFee: '0.60', /*蒸汽费/钢丝铠装材料及加工费*/ - prodFinancialCost: '0.40', /*生产财务成本*/ - accountPeriod: '1.20', /*账期*/ - acceptance: '0.90', /*承兑*/ - companyMgmtCost: '1.50', /*公司管理成本*/ - bidServiceFee: '0.44', /*中标服务费*/ - netProfit: '3.00', /*公司净利润*/ - businessFee: '2.00', /*业务费*/ - province: '', /*省*/ - city: '', /*市*/ - district: '', /*区*/ - freight: '', /*运费*/ - canFloat: '', /*可下浮点数*/ - kilometers: '', /*公里数*/ - netWeightTotal: '', /*净重合计*/ - weightTotal: '', /*重量合计*/ - totalFactoryAmount: '', /*厂价金额合计*/ - totalActualAmount: '', /*实际金额合计*/ + officeExpense: 0.022, + travelExpense: 0.011, + salaryInsur: 0.394, + otherMgmtExpense: 0.373, + carExpense: 0.010, + mgmtBizEntFee:0.156, //管理-业务招待费 + mgmtDeprecExpense: 0.016, //管理-折旧费 + consultAuditFee: 0.026, //咨询审计费 + tenderCost: 0.023, //标书费用 + rentExpense: 0.052, //房租费 + salary: 0.239, //工资 + inspectFee: 0.016, //检验检测费 + transTravelExpense: 0.020, //交通与差旅费 + otherSalesExpense: 0.073, //其他销售费 + biddingCost: 0.134, //投标费用 + bizFee: 1.183, //销售-业务费 + salesBizEntFee: 0.098, //销售-业务招待费 + transpHandlingFee: 0.621, //运输装卸费 + manufDeprecExpense: 0.217, //制造-折旧费 + interestExpense: 0.436, //利息支出 + handlingFee: 0.108, //手续费 + discInterest: 0.363, //贴现利息 + otherFinExpenses: 0.197, //财务-其他费用 + invOpCost: 0.031, //存货机会成本 + tax: 1.5, //税金 + totalFinExpenses : 0, + totalFactoryAmount: 0, + totalActualAmount: 0, }, + materialData: [ ], - regionTableData: [], - price_0t_5t: '', - price_5t_10t: '', - price_10t_25t: '', - price_25t_100t: '', - price_100t: '', - dialogRegionVisible: false, - regionName: '', - regionCurrentPage: 1, - inventoryCurrentPage : 1, materialCurrentPage: 1, pageSize: 10, dialogMaterialVisible: false, @@ -516,35 +539,25 @@ precMaterialName: '', vagueMaterialName: '', vagueModel: '', - dialogInventoryVisible: false, - inventoryTableData: [], - clickedRowIndex: null, // 用于记录点击的行的索引 + validationErrors: [], // 用于存储验证错误信息的数组 } }, computed: { - getCurrentRegionData() { - const start = (this.regionCurrentPage - 1) * this.pageSize; - const end = start + this.pageSize; - return this.regionTableData.slice(start, end); - }, getCurrentMaterialData() { const start = (this.materialCurrentPage - 1) * this.pageSize; const end = start + this.pageSize; return this.materialTableData.slice(start, end); }, - getCurrentInventoryData() { - const start = (this.inventoryCurrentPage - 1) * this.pageSize; - const end = start + this.pageSize; - return this.inventoryTableData.slice(start, end); - }, }, created() { - this.getInventoryData(); + this.calculateTotal(); }, + mounted() { }, methods: { + async init () { }, @@ -559,67 +572,55 @@ } }, + calculateTotal() { + this.formLabelAlign.totalFinExpenses =parseFloat( + ( + parseFloat(this.formLabelAlign.officeExpense) + + parseFloat(this.formLabelAlign.travelExpense) + + parseFloat(this.formLabelAlign.salaryInsur) + + parseFloat(this.formLabelAlign.otherMgmtExpense) + + parseFloat(this.formLabelAlign.carExpense) + + parseFloat(this.formLabelAlign.mgmtBizEntFee) + + parseFloat(this.formLabelAlign.mgmtDeprecExpense) + + parseFloat(this.formLabelAlign.consultAuditFee) + + parseFloat(this.formLabelAlign.tenderCost) + + parseFloat(this.formLabelAlign.rentExpense) + + parseFloat(this.formLabelAlign.salary) + + parseFloat(this.formLabelAlign.inspectFee) + + parseFloat(this.formLabelAlign.transTravelExpense) + + parseFloat(this.formLabelAlign.otherSalesExpense) + + parseFloat(this.formLabelAlign.biddingCost) + + parseFloat(this.formLabelAlign.bizFee) + + parseFloat(this.formLabelAlign.salesBizEntFee) + + parseFloat(this.formLabelAlign.transpHandlingFee) + + parseFloat(this.formLabelAlign.manufDeprecExpense) + + parseFloat(this.formLabelAlign.interestExpense) + + parseFloat(this.formLabelAlign.handlingFee) + + parseFloat(this.formLabelAlign.discInterest) + + parseFloat(this.formLabelAlign.otherFinExpenses) + + parseFloat(this.formLabelAlign.invOpCost) + + parseFloat(this.formLabelAlign.tax) + ).toFixed(2)) + }, + handleDeleteClick(index){ this.materialData.splice(index, 1) }, - selectedRegion(){ - this.dialogRegionVisible = true; - }, - chooseRegion(row) { - this.dialogRegionVisible = false; - this.formLabelAlign.province = row.province - this.formLabelAlign.city = row.city - this.formLabelAlign.district = row.district - this.formLabelAlign.kilometers = row.kilometers - this.price_0t_5t = row.price01 - this.price_5t_10t = row.price02 - this.price_10t_25t = row.price03 - this.price_25t_100t = row.price04 - this.price_100t = row.price05 - }, - searchRegion(){ - if(this.regionName === ''){ - this.$message({ - message: '请输入你要查询的地区名称', - type: 'warning' - }); - }else{ - const params = { - regionName : this.regionName - } - console.log(params) - queryRegionListByName(params).then(res => { - console.log('queryRegionListByName') - this.regionTableData = res.data || [] - this.regionCurrentPage = 1; - }).catch(err => { - this.$message.error('请求出错了:' + err) - }) - } - }, - - handleRegionCurrentChange(val) { - this.currentPage = val; - }, handleMaterialCurrentChange(val) { this.currentPage = val; }, - handleInventoryCurrentChange(val) { - this.currentPage = val; - }, - addMaterial(){ this.dialogMaterialVisible = true; }, handleSelectionChange(selection) { selection.forEach(item => { // 判断是否已经存在于已选列表中,避免重复添加 - if (!this.selectedMaterialItems.some(selectedItem => selectedItem.materialName === item.materialName)) { + if (!this.selectedMaterialItems.some(selectedItem => selectedItem.uid === item.uid)) { this.selectedMaterialItems.push(item); } }); @@ -630,7 +631,7 @@ const isSelected = this.$refs.materialTable.selection.includes(selectedItem); // 从已选列表中移除该项 - const index = this.selectedMaterialItems.findIndex(item => item.materialName === selectedItem.materialName); + const index = this.selectedMaterialItems.findIndex(item => item.uid === selectedItem.uid); if (index !== -1) { this.selectedMaterialItems.splice(index, 1); } @@ -667,12 +668,11 @@ const params = { precMaterialName : this.precMaterialName, vagueMaterialName : this.vagueMaterialName, - vagueModel : this.vagueModel + vagueModel : this.vagueModel, } queryMaterialListByParam(params).then(res => { - this.materialTableData = res.data || [] - this.materialCurrentPage = 1; + this.materialTableData = res.data || []; }).catch(err => { this.$message.error('请求出错了:' + err) }) @@ -680,35 +680,90 @@ } }, - handleInventoryClick(row, index) { - this.clickedRowIndex = index; // 记录点击的行的索引 - this.dialogInventoryVisible = true; // 打开选择盘具的 dialog - }, - - getInventoryData() { - queryInventoryList().then(res => { - this.inventoryTableData = res.data || [] - }).catch(err => { - this.$message.error('请求出错了:' + err) - }) - }, - - chooseInventory(row) { - // 在选择盘具的逻辑中,将选择的盘具信息赋值给之前点击的行的数据 - if (this.clickedRowIndex !== null) { - // 假设选择盘具后的数据存储在 this.selectedInventory 中 - const updatedRow = { - inventory: row.inventory, // 盘具名称 - weighInv: row.weighInv, // 盘重信息 - }; - this.$set(this.materialData, this.clickedRowIndex, updatedRow); - } - this.dialogInventoryVisible = false; // 打开选择盘具的 dialog - // 其他逻辑 - }, - calculatedData() { + /**-------------计算财务总成本---------------**/ + this.calculateTotal(); + /**----------------------进行盘具、数量、人工、水电三个数值的验证---------------**/ + this.validationErrors = []; // 清空之前的错误信息 + this.materialData.forEach((row, index) => { + const wdFSurcharge = parseFloat(row.wdFSurcharge) || 0; // 如果为空,默认为0 + const laborCostFloat = parseFloat(row.laborCostFloat) || 0; // 如果为空,默认为0 + const hydroCostFloat = parseFloat(row.hydroCostFloat) || 0; // 如果为空,默认为0 + const quantity = parseFloat(row.number) || 0; // 如果为空,默认为0 + // 进行数量验证 + if (isNaN(quantity) || quantity < 0) { + this.validationErrors.push(`第 ${index + 1} 行数量不符合要求\n`); + } + // 进行盘具运费的验证 + if (isNaN(wdFSurcharge) || wdFSurcharge < 0) { + this.validationErrors.push(`第 ${index + 1} 行盘具运费上浮金额不符合要求`); + } + // 进行点数的验证 + if (isNaN(laborCostFloat) || laborCostFloat < 0 || laborCostFloat > 100) { + this.validationErrors.push(`第 ${index + 1} 行人工成本上浮点数不符合要求(应在 0 到 100 之间)`); + } + if (isNaN(hydroCostFloat) || hydroCostFloat < 0 || hydroCostFloat > 100) { + this.validationErrors.push(`第 ${index + 1} 行水电成本上浮点数不符合要求(应在 0 到 100 之间)`); + } + }); + /**-----------------------验证完成进行运算,验证结果通过才进行计算--------------------------**/ + if (this.validationErrors.length === 0) { + // 遍历表格数据进行计算 + this.materialData.forEach((row, index) => { + this.validationErrors = []; // 清空之前的错误信息 + + const redBookFacPrice = parseFloat(row.rbFacPrice); + const materialCost = parseFloat(row.matCostPrice); + const wdFSurcharge = parseFloat(row.wdFSurcharge) || 0; // 如果为空,默认为0 + const laborCostFloat = parseFloat(row.laborCostFloat) || 0; // 如果为空,默认为0 + const hydroCostFloat = parseFloat(row.hydroCostFloat) || 0; // 如果为空,默认为0 + const quantity = parseFloat(row.number) || 0; // 如果为空,默认为0 + + // 进行其他计算 + this.$set(this.materialData, index, { + ...row, + varRatio: ((redBookFacPrice - materialCost) / redBookFacPrice * 100).toFixed(2), + totalFacPrice: (quantity * redBookFacPrice).toFixed(2), + totalCost: ( + (materialCost + wdFSurcharge + + materialCost * (laborCostFloat / 100) + materialCost * (hydroCostFloat / 100)) * + quantity + ).toFixed(2), + }); + }); + } else { + this.$message({ + type: 'error', + dangerouslyUseHTMLString: true, + message: this.validationErrors.join('
') + }); + } + + + // 计算厂价金额合计 + const totalFactoryAmount = this.materialData.reduce((sum, row) => sum + parseFloat(row.totalFacPrice), 0); + this.formLabelAlign.totalFactoryAmount = totalFactoryAmount.toFixed(2); + + // 计算实际金额合计 + const totalCost = this.materialData.reduce((sum, row) => sum + parseFloat(row.totalCost), 0); + this.formLabelAlign.totalActualAmount = (totalCost + totalCost * (parseFloat(this.formLabelAlign.totalFinExpenses) / 100)).toFixed(2); + }, + + /**----------------表头表单验证-----------------**/ + validateInputRange(value) { + const number = parseFloat(value); + return isNaN(number) || (number >= 0 && number <= 100); + }, + validateAndSetDefault(model, field) { + if (!this.validateInputRange(model[field])) { + // 如果验证不通过,设置错误提示 + this.$message({ + type: 'error', + message: '填写错误,范围为0~100' + }); + this.$set(model, field, 0); + } }, }, diff --git a/target/classes/templates/zmquotation/index.html b/target/classes/templates/zmquotation/index.html index 57cddee..f14ece4 100644 --- a/target/classes/templates/zmquotation/index.html +++ b/target/classes/templates/zmquotation/index.html @@ -519,7 +519,6 @@ dialogInventoryVisible: false, inventoryTableData: [], clickedRowIndex: null, // 用于记录点击的行的索引 - materialTotalRows: 0, } }, computed: { diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 9e26764..d11a9a8 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,56 +1,56 @@ -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\impl\JnMaterialServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\JnMaterialService.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\dto\JnInventoryDto.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\controller\BizQccController.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\service\BizService.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\mapper\RegionMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\mapper\EmployeeMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\dto\JnRegionDto.java -E:\myproject\JNDemo\src\main\java\com\JN\filter\LoginCheckFilter.java -E:\myproject\JNDemo\src\main\java\com\JN\config\MybatisPlusConfig.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\mapper\JnInventoryMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\utils\JSONHelper.java -E:\myproject\JNDemo\src\main\java\com\JN\controller\PageRedirectController.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\dto\InventoryDto.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\JnRegionService.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\InventoryService.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\dto\RegionDto.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\mapper\BizMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\MaterialService.java -E:\myproject\JNDemo\src\main\java\com\JN\API\qichacha\QccApiUntils.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\impl\MaterialServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\service\QccInfoService.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\mapper\QccInfoMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\controller\JNController.java -E:\myproject\JNDemo\src\main\java\com\JN\JNApplication.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\mapper\InventoryMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\RegionService.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\dto\BizDto.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\mapper\JnRegionMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\config\WebMvcConfig.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\controller\BizController.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\service\impl\BizServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\entity\QccInfo.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\impl\JnRegionServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\common\CustomException.java -E:\myproject\JNDemo\src\main\java\com\JN\common\JacksonObjectMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\dto\JnMaterialDto.java -E:\myproject\JNDemo\src\main\java\com\JN\utils\HttpHelper.java -E:\myproject\JNDemo\src\main\java\com\JN\utils\StringUtils.java -E:\myproject\JNDemo\src\main\java\com\JN\utils\SMSUtils.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\impl\JnInventoryServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\bizquery\service\impl\QccInfoServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\JnInventoryService.java -E:\myproject\JNDemo\src\main\java\com\JN\service\EmployeeService.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\impl\InventoryServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\common\GlobalExceptionHandler.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\controller\ZMController.java -E:\myproject\JNDemo\src\main\java\com\JN\service\impl\EmployeeServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\common\BaseContext.java -E:\myproject\JNDemo\src\main\java\com\JN\common\R.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\mapper\JnMaterialMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\mapper\MaterialMapper.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\impl\RegionServiceImpl.java -E:\myproject\JNDemo\src\main\java\com\JN\demo\zmquotation\dto\MaterialDto.java -E:\myproject\JNDemo\src\main\java\com\JN\utils\ValidateCodeUtils.java -E:\myproject\JNDemo\src\main\java\com\JN\common\MyMetaObjecthandler.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\dto\JnInventoryDto.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\impl\MaterialServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\dto\BizDto.java +D:\JavaProject\JNDemo\src\main\java\com\JN\utils\SMSUtils.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\controller\ZMController.java +D:\JavaProject\JNDemo\src\main\java\com\JN\API\qichacha\QccApiUntils.java +D:\JavaProject\JNDemo\src\main\java\com\JN\utils\JSONHelper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\config\WebMvcConfig.java +D:\JavaProject\JNDemo\src\main\java\com\JN\common\JacksonObjectMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\JnMaterialService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\common\CustomException.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\RegionService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\dto\MaterialDto.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\mapper\InventoryMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\utils\StringUtils.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\impl\JnMaterialServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\common\R.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\entity\QccInfo.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\mapper\MaterialMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\config\MybatisPlusConfig.java +D:\JavaProject\JNDemo\src\main\java\com\JN\common\BaseContext.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\mapper\JnInventoryMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\dto\JnMaterialDto.java +D:\JavaProject\JNDemo\src\main\java\com\JN\controller\PageRedirectController.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\impl\RegionServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\controller\BizQccController.java +D:\JavaProject\JNDemo\src\main\java\com\JN\utils\HttpHelper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\JnInventoryService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\service\EmployeeService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\JNApplication.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\JnRegionService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\dto\InventoryDto.java +D:\JavaProject\JNDemo\src\main\java\com\JN\common\MyMetaObjecthandler.java +D:\JavaProject\JNDemo\src\main\java\com\JN\filter\LoginCheckFilter.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\mapper\JnMaterialMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\service\QccInfoService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\service\impl\BizServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\impl\JnInventoryServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\mapper\QccInfoMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\mapper\EmployeeMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\controller\JNController.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\dto\RegionDto.java +D:\JavaProject\JNDemo\src\main\java\com\JN\service\impl\EmployeeServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\service\impl\QccInfoServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\impl\InventoryServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\utils\ValidateCodeUtils.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\dto\JnRegionDto.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\mapper\JnRegionMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\controller\BizController.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\service\BizService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\bizquery\mapper\BizMapper.java +D:\JavaProject\JNDemo\src\main\java\com\JN\common\GlobalExceptionHandler.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\jnzmquatation\service\impl\JnRegionServiceImpl.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\InventoryService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\service\MaterialService.java +D:\JavaProject\JNDemo\src\main\java\com\JN\demo\zmquotation\mapper\RegionMapper.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29