diff --git a/yanzhu-bigscreen/public/css/largeScreenLayout.css b/yanzhu-bigscreen/public/css/largeScreenLayout.css
index 05a14d10..79dcfff9 100644
--- a/yanzhu-bigscreen/public/css/largeScreenLayout.css
+++ b/yanzhu-bigscreen/public/css/largeScreenLayout.css
@@ -160,7 +160,7 @@
}
.header-title-user-info{
text-align: right;
- padding-right: 40px;
+ padding-right: 60px;
}
.command{
cursor: pointer;
diff --git a/yanzhu-bigscreen/src/components/header.vue b/yanzhu-bigscreen/src/components/header.vue
index d65c6396..cf3ba1c7 100644
--- a/yanzhu-bigscreen/src/components/header.vue
+++ b/yanzhu-bigscreen/src/components/header.vue
@@ -29,6 +29,22 @@
+
+
+
+
@@ -40,7 +56,8 @@ export default {
return {
nav: 1,
selProject: '',
- projects: []
+ projects: [],
+ isFullScreen: false,
}
},
computed: {
@@ -68,6 +85,13 @@ export default {
});
},
methods: {
+ toggleFullScreen() {
+ let el = document.body;
+ this.$toggleFullScreen(el);
+ setTimeout(() => {
+ this.isFullScreen = document.fullscreenElement == el;
+ }, 400);
+ },
doProjectSelect() {
let tmps = this.projects.filter(d => d.id == this.selProject);
if (tmps.length > 0) {
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProCostOutput.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProCostOutput.java
new file mode 100644
index 00000000..d8b5ebef
--- /dev/null
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/ProCostOutput.java
@@ -0,0 +1,242 @@
+package com.yanzhu.manage.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.yanzhu.common.core.annotation.Excel;
+import com.yanzhu.common.core.web.domain.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 项目成本产值对象 pro_cost_output
+ *
+ * @author yanzhu
+ * @date 2024-12-21
+ */
+public class ProCostOutput extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /** $column.columnComment */
+ private Long id;
+
+ /** 部门ID */
+ @Excel(name = "部门ID")
+ private Long comId;
+
+ /** 项目编号 */
+ @Excel(name = "项目编号")
+ private Long projectId;
+
+ /** 金额 */
+ @Excel(name = "金额")
+ private Long money;
+
+ /** 金额2 */
+ @Excel(name = "金额2")
+ private Long money2;
+
+ /** 金额2 */
+ @Excel(name = "金额3")
+ private Long money3;
+
+ /** 金额2 */
+ @Excel(name = "金额4")
+ private Long money4;
+
+ /** 金额2 */
+ @Excel(name = "金额5")
+ private Long money5;
+
+
+ /** 月份 */
+ @Excel(name = "月份")
+ private Long month;
+
+ /** 年份 */
+ @Excel(name = "年份")
+ private Long year;
+
+ /** 类型,字典project_cost_output_type */
+ @Excel(name = "类型,字典project_cost_output_type")
+ private Long costType;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date date1;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Date date2;
+
+ /** $column.columnComment */
+ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+ private Long isDel;
+
+ private String compName;
+
+ public Long getMoney3() {
+ return money3;
+ }
+
+ public void setMoney3(Long money3) {
+ this.money3 = money3;
+ }
+
+ public Long getMoney4() {
+ return money4;
+ }
+
+ public void setMoney4(Long money4) {
+ this.money4 = money4;
+ }
+
+ public Long getMoney5() {
+ return money5;
+ }
+
+ public void setMoney5(Long money5) {
+ this.money5 = money5;
+ }
+
+ public String getCompName() {
+ return compName;
+ }
+
+ public void setCompName(String compName) {
+ this.compName = compName;
+ }
+
+ public String getProjectName() {
+ return projectName;
+ }
+
+ public void setProjectName(String projectName) {
+ this.projectName = projectName;
+ }
+
+ private String projectName;
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+ public void setComId(Long comId)
+ {
+ this.comId = comId;
+ }
+
+ public Long getComId()
+ {
+ return comId;
+ }
+ public void setProjectId(Long projectId)
+ {
+ this.projectId = projectId;
+ }
+
+ public Long getProjectId()
+ {
+ return projectId;
+ }
+ public void setMoney(Long money)
+ {
+ this.money = money;
+ }
+
+ public Long getMoney()
+ {
+ return money;
+ }
+ public void setMoney2(Long money2)
+ {
+ this.money2 = money2;
+ }
+
+ public Long getMoney2()
+ {
+ return money2;
+ }
+ public void setMonth(Long month)
+ {
+ this.month = month;
+ }
+
+ public Long getMonth()
+ {
+ return month;
+ }
+ public void setYear(Long year)
+ {
+ this.year = year;
+ }
+
+ public Long getYear()
+ {
+ return year;
+ }
+ public void setCostType(Long costType)
+ {
+ this.costType = costType;
+ }
+
+ public Long getCostType()
+ {
+ return costType;
+ }
+ public void setDate1(Date date1)
+ {
+ this.date1 = date1;
+ }
+
+ public Date getDate1()
+ {
+ return date1;
+ }
+ public void setDate2(Date date2)
+ {
+ this.date2 = date2;
+ }
+
+ public Date getDate2()
+ {
+ return date2;
+ }
+ public void setIsDel(Long isDel)
+ {
+ this.isDel = isDel;
+ }
+
+ public Long getIsDel()
+ {
+ return isDel;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+ .append("id", getId())
+ .append("comId", getComId())
+ .append("projectId", getProjectId())
+ .append("money", getMoney())
+ .append("money2", getMoney2())
+ .append("month", getMonth())
+ .append("year", getYear())
+ .append("costType", getCostType())
+ .append("date1", getDate1())
+ .append("date2", getDate2())
+ .append("remark", getRemark())
+ .append("isDel", getIsDel())
+ .append("createBy", getCreateBy())
+ .append("createTime", getCreateTime())
+ .append("updateBy", getUpdateBy())
+ .append("updateTime", getUpdateTime())
+ .toString();
+ }
+}
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProCostOutputMapper.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProCostOutputMapper.java
new file mode 100644
index 00000000..af7bb881
--- /dev/null
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/mapper/ProCostOutputMapper.java
@@ -0,0 +1,89 @@
+package com.yanzhu.manage.mapper;
+
+import java.util.List;
+import com.yanzhu.manage.domain.ProCostOutput;
+
+/**
+ * 项目成本产值Mapper接口
+ *
+ * @author yanzhu
+ * @date 2024-12-21
+ */
+public interface ProCostOutputMapper
+{
+
+ /**
+ * 查询项目成本产值
+ *
+ * @param id 项目成本产值主键
+ * @return 项目成本产值
+ */
+ public ProCostOutput selectProCostOutputById(Long id);
+
+ /**
+ * 查询项目成本产值列表
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 项目成本产值集合
+ */
+ public List selectProCostOutputList(ProCostOutput proCostOutput);
+
+ /**
+ * 新增项目成本产值
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 结果
+ */
+ public int insertProCostOutput(ProCostOutput proCostOutput);
+
+ /**
+ * 修改项目成本产值
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 结果
+ */
+ public int updateProCostOutput(ProCostOutput proCostOutput);
+
+ /**
+ * 删除项目成本产值
+ *
+ * @param id 项目成本产值主键
+ * @return 结果
+ */
+ public int deleteProCostOutputById(Long id);
+
+ /**
+ * 批量删除项目成本产值
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteProCostOutputByIds(Long[] ids);
+
+
+ public List selectYearAndMonth(ProCostOutput where);
+
+ List sumByDeptId(ProCostOutput where);
+
+
+ /**
+ * 分类汇总,用于大屏 【工程审批】【付款金额】
+ * @param where
+ * @return
+ */
+ public List sumForBsEnginAuditing(ProCostOutput where);
+
+ /**
+ * 项目付款明细,用于大屏【工程审批】【付款金额】
+ * @param where
+ * @return
+ */
+ public List selectForBigEnginList(ProCostOutput where);
+
+ /**
+ * 项目详情-项目分类汇总
+ * @param where
+ * @return
+ */
+ public List groupBYProject(ProCostOutput where);
+}
diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProCostOutputMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProCostOutputMapper.xml
new file mode 100644
index 00000000..17f5cce6
--- /dev/null
+++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/ProCostOutputMapper.xml
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select po.id, po.com_id, po.project_id, po.money, po.money2,po.money3,po.money4,po.money5, po.month, po.year, po.cost_type, po.date1, po.date2,
+ po.remark, po.is_del, po.create_by, po.create_time, po.update_by, po.update_time,dp.`dept_name` comp_name,pi.`project_name`
+ from pro_cost_output po
+ LEFT JOIN sys_dept dp ON po.`com_id`=dp.`dept_id`
+ LEFT JOIN pro_project_info pi ON po.`project_id`=pi.`id`
+
+
+
+
+
+
+
+ insert into pro_cost_output
+
+ com_id,
+ project_id,
+ money,
+ money2,
+ money3,
+ money4,
+ money5,
+ month,
+ year,
+ cost_type,
+ date1,
+ date2,
+ remark,
+ is_del,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+
+
+ #{comId},
+ #{projectId},
+ #{money},
+ #{money2},
+ #{money3},
+ #{money4},
+ #{money5},
+ #{month},
+ #{year},
+ #{costType},
+ #{date1},
+ #{date2},
+ #{remark},
+ #{isDel},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+
+
+
+
+ update pro_cost_output
+
+ com_id = #{comId},
+ project_id = #{projectId},
+ money = #{money},
+ money2 = #{money2},
+ money3 = #{money3},
+ money4 = #{money4},
+ money5 = #{money5},
+ month = #{month},
+ year = #{year},
+ cost_type = #{costType},
+ date1 = #{date1},
+ date2 = #{date2},
+ remark = #{remark},
+ is_del = #{isDel},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+
+ where id = #{id}
+
+
+
+ delete from pro_cost_output where id = #{id}
+
+
+
+ delete from pro_cost_output where id in
+
+ #{id}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yanzhu-gateway/src/main/java/com/yanzhu/gateway/config/CaptchaConfig.java b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/config/CaptchaConfig.java
index 5cccb777..719e6f4a 100644
--- a/yanzhu-gateway/src/main/java/com/yanzhu/gateway/config/CaptchaConfig.java
+++ b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/config/CaptchaConfig.java
@@ -49,11 +49,11 @@ public class CaptchaConfig
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
Properties properties = new Properties();
// 是否有边框 默认为true 我们可以自己设置yes,no
- properties.setProperty(KAPTCHA_BORDER, "yes");
+ properties.setProperty(KAPTCHA_BORDER, "no");
// 边框颜色 默认为Color.BLACK
- properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");
+ //properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");
// 验证码文本字符颜色 默认为Color.BLACK
- properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
+ properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "white");
// 验证码图片宽度 默认为200
properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");
// 验证码图片高度 默认为50
@@ -76,6 +76,7 @@ public class CaptchaConfig
properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
// 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");
+ properties.setProperty(KAPTCHA_BACKGROUND_IMPL, "com.yanzhu.gateway.config.NoBackground");
Config config = new Config(properties);
defaultKaptcha.setConfig(config);
return defaultKaptcha;
diff --git a/yanzhu-gateway/src/main/java/com/yanzhu/gateway/config/NoBackground.java b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/config/NoBackground.java
new file mode 100644
index 00000000..cb007c63
--- /dev/null
+++ b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/config/NoBackground.java
@@ -0,0 +1,29 @@
+package com.yanzhu.gateway.config;
+
+import com.google.code.kaptcha.BackgroundProducer;
+import com.google.code.kaptcha.util.Configurable;
+
+import java.awt.*;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.BufferedImage;
+
+public class NoBackground extends Configurable implements BackgroundProducer {
+ @Override
+ public BufferedImage addBackground(BufferedImage baseImage)
+ {
+ Color colorFrom = getConfig().getBackgroundColorFrom();
+ Color colorTo = getConfig().getBackgroundColorTo();
+
+ int width = baseImage.getWidth();
+ int height = baseImage.getHeight();
+
+ // create an opaque image
+ BufferedImage imageWithBackground = new BufferedImage(width, height,
+ BufferedImage.TRANSLUCENT);
+
+ Graphics2D graph = (Graphics2D) imageWithBackground.getGraphics();
+ graph.drawImage(baseImage, 0, 0, null);
+
+ return imageWithBackground;
+ }
+}
diff --git a/yanzhu-gateway/src/main/java/com/yanzhu/gateway/service/impl/ValidateCodeServiceImpl.java b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/service/impl/ValidateCodeServiceImpl.java
index 5404ae28..b9feb1a9 100644
--- a/yanzhu-gateway/src/main/java/com/yanzhu/gateway/service/impl/ValidateCodeServiceImpl.java
+++ b/yanzhu-gateway/src/main/java/com/yanzhu/gateway/service/impl/ValidateCodeServiceImpl.java
@@ -81,7 +81,7 @@ public class ValidateCodeServiceImpl implements ValidateCodeService
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
- ImageIO.write(image, "jpg", os);
+ ImageIO.write(image, "png", os);
}
catch (IOException e)
{
diff --git a/yanzhu-modules/yanzhu-manage/pom.xml b/yanzhu-modules/yanzhu-manage/pom.xml
index c51fea3e..0f8f1138 100644
--- a/yanzhu-modules/yanzhu-manage/pom.xml
+++ b/yanzhu-modules/yanzhu-manage/pom.xml
@@ -121,6 +121,9 @@
com.lowagie
iTextAsian
+ 1.0.0
+ system
+ ${pom.basedir}\libs\iTextAsian-1.0.0.jar
@@ -138,6 +141,9 @@
com.aspose
aspose-words
+ 15.8.0
+ system
+ ${pom.basedir}\libs\aspose-words-15.8.0-jdk16.jar
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProCostOutputController.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProCostOutputController.java
new file mode 100644
index 00000000..45f44af7
--- /dev/null
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/controller/ProCostOutputController.java
@@ -0,0 +1,145 @@
+package com.yanzhu.manage.controller;
+
+import java.util.List;
+import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+import com.yanzhu.common.core.utils.poi.ExcelUtil;
+import com.yanzhu.common.core.web.controller.BaseController;
+import com.yanzhu.common.core.web.domain.AjaxResult;
+import com.yanzhu.common.core.web.page.TableDataInfo;
+import com.yanzhu.common.log.annotation.Log;
+import com.yanzhu.common.log.enums.BusinessType;
+import com.yanzhu.common.security.annotation.RequiresPermissions;
+import com.yanzhu.manage.domain.ProCostOutput;
+import com.yanzhu.manage.service.IProCostOutputService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 项目成本产值Controller
+ *
+ * @author yanzhu
+ * @date 2024-12-21
+ */
+@RestController
+@RequestMapping("/costOutput")
+public class ProCostOutputController extends BaseController
+{
+ @Autowired
+ private IProCostOutputService proCostOutputService;
+
+ /**
+ * 查询项目成本产值列表
+ */
+ @RequiresPermissions("manage:costOutput:list")
+ @GetMapping("/list")
+ public TableDataInfo list(ProCostOutput proCostOutput)
+ {
+ startPage();
+ List list = proCostOutputService.selectProCostOutputList(proCostOutput);
+ return getDataTable(list);
+ }
+
+ /**
+ * 导出项目成本产值列表
+ */
+ @RequiresPermissions("manage:costOutput:export")
+ @Log(title = "项目成本产值", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ProCostOutput proCostOutput)
+ {
+ List list = proCostOutputService.selectProCostOutputList(proCostOutput);
+ ExcelUtil util = new ExcelUtil(ProCostOutput.class);
+ util.exportExcel(response, list, "项目成本产值数据");
+ }
+
+ /**
+ * 获取项目成本产值详细信息
+ */
+ @RequiresPermissions("manage:costOutput:query")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return success(proCostOutputService.selectProCostOutputById(id));
+ }
+
+ /**
+ * 新增项目成本产值
+ */
+ @RequiresPermissions("manage:costOutput:add")
+ @Log(title = "项目成本产值", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody ProCostOutput proCostOutput)
+ {
+ return toAjax(proCostOutputService.insertProCostOutput(proCostOutput));
+ }
+
+ /**
+ * 修改项目成本产值
+ */
+ @RequiresPermissions("manage:costOutput:edit")
+ @Log(title = "项目成本产值", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody ProCostOutput proCostOutput)
+ {
+ return toAjax(proCostOutputService.updateProCostOutput(proCostOutput));
+ }
+
+ /**
+ * 删除项目成本产值
+ */
+ @RequiresPermissions("manage:costOutput:remove")
+ @Log(title = "项目成本产值", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(proCostOutputService.deleteProCostOutputByIds(ids));
+ }
+
+
+ @PostMapping("/selectYearAndMonth")
+ public AjaxResult selectYearAndMonth(@RequestBody ProCostOutput where){
+ List list=proCostOutputService.selectYearAndMonth(where);
+ if(list.size()==0){
+ proCostOutputService.initProject(where.getProjectId(),where.getComId());
+ }
+ list=proCostOutputService.selectYearAndMonth(where);
+ return AjaxResult.success(list);
+ }
+
+ @PostMapping("/sumByDeptId")
+ public AjaxResult sumByDeptId(@RequestBody ProCostOutput where){
+ List list=proCostOutputService.sumByDeptId(where);
+ return AjaxResult.success(list);
+ }
+
+ /**
+ * 分类汇总,用于大屏 【工程审批】【付款金额】
+ * @param where
+ * @return
+ */
+ @PostMapping("/sumForBsEnginAuditing")
+ public AjaxResult sumForBsEnginAuditing(@RequestBody ProCostOutput where){
+ Long deptId=where.getId();
+ List list=proCostOutputService.sumForBsEnginAuditing(where);
+ return AjaxResult.success(list);
+ }
+
+ /**
+ * 项目付款明细,用于大屏【工程审批】【付款金额】
+ * @param where
+ * @return
+ */
+ @PostMapping("/selectForBigEnginList")
+ public AjaxResult selectForBigEnginList(@RequestBody ProCostOutput where){
+ Map>> list=proCostOutputService.selectForBigEnginList(where);
+ return AjaxResult.success(list);
+ }
+}
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProCostOutputService.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProCostOutputService.java
new file mode 100644
index 00000000..7f795c4a
--- /dev/null
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/IProCostOutputService.java
@@ -0,0 +1,103 @@
+package com.yanzhu.manage.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.yanzhu.manage.domain.ProCostOutput;
+
+/**
+ * 项目成本产值Service接口
+ *
+ * @author yanzhu
+ * @date 2024-12-21
+ */
+public interface IProCostOutputService
+{
+ /**
+ * 查询项目成本产值
+ *
+ * @param id 项目成本产值主键
+ * @return 项目成本产值
+ */
+ public ProCostOutput selectProCostOutputById(Long id);
+
+ /**
+ * 查询项目成本产值列表
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 项目成本产值集合
+ */
+ public List selectProCostOutputList(ProCostOutput proCostOutput);
+
+ /**
+ * 新增项目成本产值
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 结果
+ */
+ public int insertProCostOutput(ProCostOutput proCostOutput);
+
+ /**
+ * 修改项目成本产值
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 结果
+ */
+ public int updateProCostOutput(ProCostOutput proCostOutput);
+
+ /**
+ * 批量删除项目成本产值
+ *
+ * @param ids 需要删除的项目成本产值主键集合
+ * @return 结果
+ */
+ public int deleteProCostOutputByIds(Long[] ids);
+
+ /**
+ * 删除项目成本产值信息
+ *
+ * @param id 项目成本产值主键
+ * @return 结果
+ */
+ public int deleteProCostOutputById(Long id);
+
+ /**
+ * 项目初始化
+ * @param projectId
+ */
+ public void initProject(long projectId,long comId);
+
+ public void addYearInvestment(ProCostOutput where);
+
+ public void addMonthInvestment(ProCostOutput where);
+
+ public List selectYearAndMonth(ProCostOutput where);
+
+ public List sumByDeptId(ProCostOutput where);
+
+ /**
+ * 批量操作数据
+ * @param list
+ * @return
+ */
+ public int batchUpdate(List list);
+ /**
+ * 分类汇总,用于大屏 【工程审批】【付款金额】
+ * @param where
+ * @return
+ */
+ public List sumForBsEnginAuditing(ProCostOutput where);
+
+ /**
+ * 项目付款明细,用于大屏【工程审批】【付款金额】
+ * @param where
+ * @return
+ */
+ public Map>> selectForBigEnginList(ProCostOutput where);
+ /**
+ * 项目详情-项目分类汇总
+ * @param where
+ * @return
+ */
+ public List groupBYProject(ProCostOutput where);
+}
diff --git a/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProCostOutputServiceImpl.java b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProCostOutputServiceImpl.java
new file mode 100644
index 00000000..02ee3180
--- /dev/null
+++ b/yanzhu-modules/yanzhu-manage/src/main/java/com/yanzhu/manage/service/impl/ProCostOutputServiceImpl.java
@@ -0,0 +1,255 @@
+package com.yanzhu.manage.service.impl;
+
+import java.util.*;
+
+import com.yanzhu.common.core.context.SecurityContextHolder;
+import com.yanzhu.common.core.utils.DateUtils;
+import com.yanzhu.manage.domain.ProCostOutput;
+import com.yanzhu.manage.mapper.ProCostOutputMapper;
+import com.yanzhu.manage.service.IProCostOutputService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.actuate.web.mappings.MappingsEndpoint;
+import org.springframework.stereotype.Service;
+
+/**
+ * 项目成本产值Service业务层处理
+ *
+ * @author yanzhu
+ * @date 2024-12-21
+ */
+@Service
+public class ProCostOutputServiceImpl implements IProCostOutputService
+{
+ @Autowired
+ private ProCostOutputMapper proCostOutputMapper;
+ @Autowired
+ private MappingsEndpoint mappingsEndpoint;
+
+ /**
+ * 查询项目成本产值
+ *
+ * @param id 项目成本产值主键
+ * @return 项目成本产值
+ */
+ @Override
+ public ProCostOutput selectProCostOutputById(Long id)
+ {
+ return proCostOutputMapper.selectProCostOutputById(id);
+ }
+
+ /**
+ * 查询项目成本产值列表
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 项目成本产值
+ */
+ @Override
+ public List selectProCostOutputList(ProCostOutput proCostOutput)
+ {
+ return proCostOutputMapper.selectProCostOutputList(proCostOutput);
+ }
+
+ /**
+ * 新增项目成本产值
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 结果
+ */
+ @Override
+ public int insertProCostOutput(ProCostOutput proCostOutput)
+ {
+ proCostOutput.setCreateBy(SecurityContextHolder.getUserName());
+ proCostOutput.setCreateTime(DateUtils.getNowDate());
+ return proCostOutputMapper.insertProCostOutput(proCostOutput);
+ }
+
+ /**
+ * 修改项目成本产值
+ *
+ * @param proCostOutput 项目成本产值
+ * @return 结果
+ */
+ @Override
+ public int updateProCostOutput(ProCostOutput proCostOutput)
+ {
+ proCostOutput.setUpdateBy(SecurityContextHolder.getUserName());
+ proCostOutput.setUpdateTime(DateUtils.getNowDate());
+ return proCostOutputMapper.updateProCostOutput(proCostOutput);
+ }
+
+ /**
+ * 批量删除项目成本产值
+ *
+ * @param ids 需要删除的项目成本产值主键
+ * @return 结果
+ */
+ @Override
+ public int deleteProCostOutputByIds(Long[] ids)
+ {
+ return proCostOutputMapper.deleteProCostOutputByIds(ids);
+ }
+
+ /**
+ * 删除项目成本产值信息
+ *
+ * @param id 项目成本产值主键
+ * @return 结果
+ */
+ @Override
+ public int deleteProCostOutputById(Long id)
+ {
+ return proCostOutputMapper.deleteProCostOutputById(id);
+ }
+
+ @Override
+ public void initProject(long projectId,long comId) {
+ Calendar calendar=Calendar.getInstance();
+ int year=calendar.get(Calendar.YEAR);
+ ProCostOutput it=new ProCostOutput();
+ it.setProjectId(projectId);
+ it.setComId(comId);
+ it.setMoney(0l);
+ it.setRemark("");
+ it.setIsDel(0l);
+ it.setCostType(1l);//总投资
+ insertProCostOutput(it);
+ it.setCostType(2l);//年度投资
+ it.setYear(year*1l);
+ insertProCostOutput(it);
+ it.setYear(null);
+ it.setCostType(3l);//合同金额
+ insertProCostOutput(it);
+ it.setCostType(4l);//合同支付金额
+ insertProCostOutput(it);
+ it.setCostType(5l);//合同挂账金额
+ insertProCostOutput(it);
+ it.setCostType(6l);//安措金额
+ insertProCostOutput(it);
+ it.setCostType(7l);//安措支付金额
+ insertProCostOutput(it);
+ it.setCostType(8l);//安措挂账金额
+ insertProCostOutput(it);
+ it.setCostType(10l);//建安费金额
+ insertProCostOutput(it);
+ it.setCostType(9l);//月度投资
+ it.setYear(year*1l);
+ for(int i=1;i<=12;i++){
+ it.setMonth(i*1l);
+ insertProCostOutput(it);
+ }
+ }
+
+ @Override
+ public void addYearInvestment(ProCostOutput it) {
+ it.setMoney(0l);
+ it.setRemark("");
+ it.setIsDel(0l);
+ it.setCostType(2l);//年度投资
+ insertProCostOutput(it);
+ }
+
+ @Override
+ public void addMonthInvestment(ProCostOutput it) {
+ it.setMoney(0l);
+ it.setRemark("");
+ it.setIsDel(0l);
+ it.setCostType(9l);//月度投资
+ for(int i=1;i<=12;i++){
+ it.setMonth(i*1l);
+ insertProCostOutput(it);
+ }
+ }
+
+ @Override
+ public List selectYearAndMonth(ProCostOutput where) {
+ return proCostOutputMapper.selectYearAndMonth(where);
+ }
+
+ @Override
+ public List sumByDeptId(ProCostOutput where) {
+ return proCostOutputMapper.sumByDeptId(where);
+ }
+
+ @Override
+ public int batchUpdate(List list) {
+ ProCostOutput where=new ProCostOutput();
+ where.setProjectId(list.get(0).getProjectId());
+ where.setCostType(11l);//工程进度款支付
+ List contractList=selectProCostOutputList(where);
+ where.setCostType(12l);//安措费支付明细
+ List safetyList=selectProCostOutputList(where);
+ List contractIds=new ArrayList<>();
+ List safetyIds=new ArrayList<>();
+ for(ProCostOutput it:list){
+ if(it.getId()!=null){
+ updateProCostOutput(it);
+ if(it.getCostType().equals(11l)){
+ contractIds.add(it.getId());
+ }
+ if(it.getCostType().equals(12l)){
+ safetyIds.add(it.getId());
+ }
+ }else{
+ insertProCostOutput(it);
+ }
+ }
+ for(ProCostOutput it :contractList){
+ if(!contractIds.contains(it.getId())){
+ deleteProCostOutputById(it.getId());
+ }
+ }
+ for(ProCostOutput it :safetyList){
+ if(!safetyIds.contains(it.getId())){
+ deleteProCostOutputById(it.getId());
+ }
+ }
+ return list.size();
+ }
+ /**
+ * 分类汇总,用于大屏 【工程审批】【付款金额】
+ * @param where
+ * @return
+ */
+ @Override
+ public List sumForBsEnginAuditing(ProCostOutput where) {
+ return proCostOutputMapper.sumForBsEnginAuditing(where);
+ }
+
+ @Override
+ public Map>> selectForBigEnginList(ProCostOutput where) {
+ List list=proCostOutputMapper.selectForBigEnginList(where);
+ Map>> map=new HashMap<>();
+ List list11;//=new ArrayList<>();
+ List list12;//=new ArrayList<>();
+ List> plist;
+ for(ProCostOutput it:list){
+ String pname=it.getRemark();
+ if(!map.containsKey(pname)){
+ list12=new ArrayList<>();
+ list11=new ArrayList<>();
+ plist=new ArrayList<>();
+ plist.add(list12);
+ plist.add(list11);
+ map.put(pname,plist);
+ }
+ plist=map.get(pname);
+ list12=plist.get(0);
+ list11=plist.get(1);
+ if(it.getCostType().equals(12l)){
+ list12.add(it);
+ }else{
+ list11.add(it);
+ }
+ }
+ return map;
+ }
+ /**
+ * 项目详情-项目分类汇总
+ * @param where
+ * @return
+ */
+ @Override
+ public List groupBYProject(ProCostOutput where) {
+ return proCostOutputMapper.groupBYProject(where);
+ }
+}
diff --git a/yanzhu-ui-vue3/src/api/manage/costOutput.js b/yanzhu-ui-vue3/src/api/manage/costOutput.js
new file mode 100644
index 00000000..44a0e23f
--- /dev/null
+++ b/yanzhu-ui-vue3/src/api/manage/costOutput.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询项目成本产值列表
+export function listCostOutput(query) {
+ return request({
+ url: '/manage/costOutput/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 查询项目成本产值详细
+export function getCostOutput(id) {
+ return request({
+ url: '/manage/costOutput/' + id,
+ method: 'get'
+ })
+}
+
+// 新增项目成本产值
+export function addCostOutput(data) {
+ return request({
+ url: '/manage/costOutput',
+ method: 'post',
+ data: data
+ })
+}
+
+// 修改项目成本产值
+export function updateCostOutput(data) {
+ return request({
+ url: '/manage/costOutput',
+ method: 'put',
+ data: data
+ })
+}
+
+// 删除项目成本产值
+export function delCostOutput(id) {
+ return request({
+ url: '/manage/costOutput/' + id,
+ method: 'delete'
+ })
+}
diff --git a/yanzhu-ui-vue3/src/assets/icons/svg/validCode.svg b/yanzhu-ui-vue3/src/assets/icons/svg/validCode.svg
index cfb10214..6f98e604 100644
--- a/yanzhu-ui-vue3/src/assets/icons/svg/validCode.svg
+++ b/yanzhu-ui-vue3/src/assets/icons/svg/validCode.svg
@@ -1 +1,8 @@
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/yanzhu-ui-vue3/src/assets/images/loginbg.jpeg b/yanzhu-ui-vue3/src/assets/images/loginbg.jpeg
new file mode 100644
index 00000000..a825f44a
Binary files /dev/null and b/yanzhu-ui-vue3/src/assets/images/loginbg.jpeg differ
diff --git a/yanzhu-ui-vue3/src/assets/images/loginbg2.png b/yanzhu-ui-vue3/src/assets/images/loginbg2.png
new file mode 100644
index 00000000..1ab6882d
Binary files /dev/null and b/yanzhu-ui-vue3/src/assets/images/loginbg2.png differ
diff --git a/yanzhu-ui-vue3/src/assets/images/loginbg3.png b/yanzhu-ui-vue3/src/assets/images/loginbg3.png
new file mode 100644
index 00000000..1ade253d
Binary files /dev/null and b/yanzhu-ui-vue3/src/assets/images/loginbg3.png differ
diff --git a/yanzhu-ui-vue3/src/assets/images/pay.png b/yanzhu-ui-vue3/src/assets/images/pay.png
deleted file mode 100644
index bb8b9672..00000000
Binary files a/yanzhu-ui-vue3/src/assets/images/pay.png and /dev/null differ
diff --git a/yanzhu-ui-vue3/src/views/login.vue b/yanzhu-ui-vue3/src/views/login.vue
index 6759ed8f..318b80da 100644
--- a/yanzhu-ui-vue3/src/views/login.vue
+++ b/yanzhu-ui-vue3/src/views/login.vue
@@ -1,54 +1,31 @@
-
+
- 若依后台管理系统
-
-
+ 数字建安
+
+
-
+
-
+
-
![]()
+
+
记住密码
-
+
登 录
登 录 中...
@@ -56,11 +33,13 @@
立即注册
+
+
@@ -114,12 +93,12 @@ function handleLogin() {
}
// 调用action的登录方法
userStore.login(loginForm.value).then(() => {
- if(route.query?.redirect){
- location.href=route.query.redirect;
- }else{
- router.push({ path:"/" });
+ if (route.query?.redirect) {
+ location.href = route.query.redirect;
+ } else {
+ router.push({ path: "/" });
}
-
+
}).catch(() => {
loading.value = false;
// 重新获取验证码
@@ -156,66 +135,138 @@ getCode();
getCookie();
-
diff --git a/yanzhu-ui-vue3/src/views/manage/costOutput/index.vue b/yanzhu-ui-vue3/src/views/manage/costOutput/index.vue
new file mode 100644
index 00000000..63b40894
--- /dev/null
+++ b/yanzhu-ui-vue3/src/views/manage/costOutput/index.vue
@@ -0,0 +1,369 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ parseTime(scope.row.date1, '{y}-{m}-{d}') }}
+
+
+
+
+ {{ parseTime(scope.row.date2, '{y}-{m}-{d}') }}
+
+
+
+
+
+
+ 修改
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yanzhu-ui-vue3/src/views/manage/proProjectInfo/index.vue b/yanzhu-ui-vue3/src/views/manage/proProjectInfo/index.vue
index 6d1d212e..d543881f 100644
--- a/yanzhu-ui-vue3/src/views/manage/proProjectInfo/index.vue
+++ b/yanzhu-ui-vue3/src/views/manage/proProjectInfo/index.vue
@@ -115,7 +115,7 @@
-
+
-
+