From 6c43043c2fcc32645c4ba207a73c6ff86b19f307 Mon Sep 17 00:00:00 2001 From: OathK1per <zhangypg@gmail.com> Date: Mon, 12 Dec 2022 16:33:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9F=A5=E7=9C=8B=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E9=A1=B9=E7=9B=AE=E5=9F=BA=E6=9C=AC=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/ProjectController.java | 9 +- .../work/service/ProjectBudgetService.java | 25 +- .../work/service/ProjectEstimateService.java | 55 +++- .../static/assets/js/project_budget.js | 166 +++++++++++- .../templates/admin/project_approve.ftl | 255 +++++++++++++++++- .../templates/admin/project_budget_edit.ftl | 6 +- .../templates/admin/project_list.ftl | 1 + 7 files changed, 503 insertions(+), 14 deletions(-) diff --git a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java index 65efa03..6b7b529 100644 --- a/src/main/java/cn/palmte/work/controller/backend/ProjectController.java +++ b/src/main/java/cn/palmte/work/controller/backend/ProjectController.java @@ -424,8 +424,7 @@ public class ProjectController extends BaseController { @RequestMapping("/budgetEditSave") public String budgetEditSave(Project project, ProjectBudget projectBudget, BindingResult bindingResult, BudgetBean budgetBean, Map<String, Object> model) { Project projectInDb = projectService.getProject(project.getId()); - projectBudgetRepository.save(projectBudget); - projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT); + projectBudgetService.budgetEditSave(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), ApproveStatusEnum.APPROVAL_UNCOMMIT, projectBudget); return "redirect:/project/list"; } @@ -435,8 +434,7 @@ public class ProjectController extends BaseController { @RequestMapping("/budgetEditSaveAndApprove") public String budgetEditSaveAndApprove(Project project, ProjectBudget projectBudget, BudgetBean budgetBean, Map<String, Object> model) throws Exception { Project projectInDb = projectService.getProject(project.getId()); - projectBudgetRepository.save(projectBudget); - projectBudgetService.budgetEditSaveAndApprove(project, projectInDb, budgetBean, InterfaceUtil.getAdmin()); + projectBudgetService.budgetEditSaveAndApprove(project, projectInDb, budgetBean, InterfaceUtil.getAdmin(), projectBudget); return "redirect:/project/list"; } @@ -647,6 +645,9 @@ public class ProjectController extends BaseController { model.put("planEndStr", project.getPlanEndStr()); model.put("planEndDate", project.getPlanEndStr()); + ProjectBudget projectBudget = projectBudgetRepository.findFirstByProjectId(id); + model.put("projectBudget", projectBudget); + //概算信息 EstimateBean estimateBean = projectEstimateService.getEstimate(project); model.put("estimateBean", estimateBean); diff --git a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java index 851bb39..b8f981e 100644 --- a/src/main/java/cn/palmte/work/service/ProjectBudgetService.java +++ b/src/main/java/cn/palmte/work/service/ProjectBudgetService.java @@ -65,6 +65,8 @@ public class ProjectBudgetService { private ProjectBudgetService projectBudgetService; @Autowired private ProjectExtendRepository projectExtendRepository; + @Autowired + private ProjectBudgetRepository projectBudgetRepository; @Value("#{'${fourcal.fixedprojectmanagedetails}'.split('\\|')}") private String[] fixedProjectManageDetails; @@ -865,10 +867,10 @@ public class ProjectBudgetService { * 编辑预算保存项目并审核 */ //@Transactional(rollbackFor = RuntimeException.class) - public void budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin) throws Exception { + public void budgetEditSaveAndApprove(Project project, Project projectInDb, BudgetBean budgetBean, Admin admin, ProjectBudget projectBudget) throws Exception { Integer approveStatusBudget = projectInDb.getApproveStatusBudget(); - budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING); + budgetEditSave(project, projectInDb, budgetBean, admin, ApproveStatusEnum.APPROVAL_PENDING, projectBudget); budgetApprove(approveStatusBudget, projectInDb, admin); } @@ -902,7 +904,7 @@ public class ProjectBudgetService { * 编辑预算保存项目 */ @Transactional(rollbackFor = RuntimeException.class) - public Project budgetEditSave(Project project, Project p, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum) { + public Project budgetEditSave(Project project, Project p, BudgetBean budgetBean, Admin admin, ApproveStatusEnum approveStatusEnum, ProjectBudget projectBudget) { // Project p = projectService.estimateEditProject(project, projectInDb); p.setOtherName(project.getOtherName()); @@ -915,6 +917,8 @@ public class ProjectBudgetService { p.setStatusDesc(StatusEnum.BUDGET_ACCOUNTS.getStatusDesc()); p.setApproveStatusBudget(approveStatusEnum.getApproveStatus()); p = projectRepository.saveAndFlush(p); + + saveProjectBudget(p, projectBudget); //清空重新保存概算信息 clearBudget(p); saveBudget(p, budgetBean); @@ -926,6 +930,21 @@ public class ProjectBudgetService { return p; } + private void saveProjectBudget(Project p, ProjectBudget projectBudget) { + ProjectBudget budget = projectBudgetRepository.findFirstByProjectId(p.getId()); + projectBudget.setDeptIdBudget(budget.getDeptIdBudget()); + projectBudget.setDeptNameBudget(budget.getDeptNameBudget()); + projectBudget.setTypeDescBudget(TypeEnum.parseType(projectBudget.getTypeBudget()).getTypeDesc()); + projectBudget.setUnderwrittenModeStrBudget(UnderwrittenModeEnum.parseUnderwrittenMode(projectBudget.getUnderwrittenModeBudget()).getUnderwrittenModeStr()); + projectBudget.setCooperateTypeStrBudget(CooperateTypeEnum.parseCooperateType(projectBudget.getCooperateTypeBudget()).getCooperateTypeStr()); + projectBudget.setCertaintyStrBudget(CertaintyEnum.parseCertainty(projectBudget.getCertaintyBudget()).getCertaintyStr()); + projectBudget.setIndustryScenarioBudget(IndustrySceneEnum.parseScene(projectBudget.getIndustrySceneBudget()).getScenario()); + projectBudget.setIsSecondStrBudget(IsSecondEnum.parseIsSecond(projectBudget.getIsSecondBudget()).getIsSecondStr()); + projectBudget.setSignTypeStrBudget(SignTypeEnum.parseSignType(projectBudget.getSignTypeBudget()).getSignTypeStr()); + projectBudget.setResolvePlanStrBudget(ResolvePlanEnum.parseResolvePlan(projectBudget.getResolvePlanBudget()).getResolvePlanStr()); + projectBudgetRepository.save(projectBudget); + } + private void saveProjectExtend(Project p) { ProjectExtend extend = projectExtendRepository.findByProjectId(p.getId()); if (extend == null) { diff --git a/src/main/java/cn/palmte/work/service/ProjectEstimateService.java b/src/main/java/cn/palmte/work/service/ProjectEstimateService.java index 2c5e13c..9b1e66a 100644 --- a/src/main/java/cn/palmte/work/service/ProjectEstimateService.java +++ b/src/main/java/cn/palmte/work/service/ProjectEstimateService.java @@ -41,6 +41,8 @@ public class ProjectEstimateService { private ProjectVisibleRepository projectVisibleRepository; @Autowired private ProjectExtendRepository projectExtendRepository; + @Autowired + private ProjectBudgetRepository projectBudgetRepository; public void clearEstimate(Project project){ List<ProjectEstimateIncome> incomes = projectEstimateIncomeRepository.findAllByProjectIdEquals(project.getId()); @@ -291,11 +293,62 @@ public class ProjectEstimateService { Integer approveStatusEstimate = projectInDb.getApproveStatusEstimate(); - estimateEditSave(project, projectInDb, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING); + Project estimateProject = estimateEditSave(project, projectInDb, estimateBean, admin, ApproveStatusEnum.APPROVAL_PENDING); + + projectBudgetSave(estimateProject); estimateApprove(approveStatusEstimate, projectInDb, admin); } + private void projectBudgetSave(Project estimateProject) { + ProjectBudget projectBudget = new ProjectBudget(); + projectBudget.setProjectId(estimateProject.getId()); + projectBudget.setProjectNoBudget(estimateProject.getProjectNo()); + projectBudget.setNameBudget(estimateProject.getName()); + projectBudget.setTypeBudget(estimateProject.getType()); + projectBudget.setTypeDescBudget(estimateProject.getTypeDesc()); + projectBudget.setDeptIdBudget(estimateProject.getDeptId()); + projectBudget.setDeptNameBudget(estimateProject.getDeptName()); + projectBudget.setStartDateBudget(estimateProject.getStartDate()); + projectBudget.setEndDateBudget(estimateProject.getEndDate()); + projectBudget.setUnderwrittenModeBudget(estimateProject.getUnderwrittenMode()); + projectBudget.setUnderwrittenModeStrBudget(estimateProject.getUnderwrittenModeStr()); + projectBudget.setCooperateTypeBudget(estimateProject.getCooperateType()); + projectBudget.setCooperateTypeStrBudget(estimateProject.getCooperateTypeStr()); + projectBudget.setCollaboratorBudget(estimateProject.getCollaborator()); + projectBudget.setCollaboratorUrlBudget(estimateProject.getCollaboratorUrl()); + projectBudget.setCertaintyBudget(estimateProject.getCertainty()); + projectBudget.setCertaintyStrBudget(estimateProject.getCertaintyStr()); + projectBudget.setCustomerBudget(estimateProject.getCustomer()); + projectBudget.setTerminalCustomerBudget(estimateProject.getTerminalCustomer()); + projectBudget.setAdvanceInterestAmountBudget(estimateProject.getAdvanceInterestAmount()); + projectBudget.setAdvancePeakAmountBudget(estimateProject.getAdvancePeakAmount()); + projectBudget.setContractAmountBudget(estimateProject.getContractAmount()); + projectBudget.setIndustryScenarioBudget(estimateProject.getIndustryScenario()); + projectBudget.setIndustrySceneBudget(estimateProject.getIndustryScene()); + projectBudget.setGrossProfitBudget(estimateProject.getGrossProfit()); + projectBudget.setGrossProfitMarginBudget(estimateProject.getGrossProfitMargin()); + projectBudget.setHuazhiProductAmountBudget(estimateProject.getHuazhiProductAmount()); + projectBudget.setHuizhiProductAmountBudget(estimateProject.getHuizhiProductAmount()); + projectBudget.setHuasanProductAmountBudget(estimateProject.getHuasanProductAmount()); + projectBudget.setZiguangOtherAmountBudget(estimateProject.getZiguangOtherAmount()); + projectBudget.setMainContractCollectionTermsBudget(estimateProject.getMainContractCollectionTerms()); + projectBudget.setValueRiskBudget(estimateProject.getValueRisk()); + projectBudget.setPrincipalBudget(estimateProject.getPrincipal()); + projectBudget.setContractTimeBudget(estimateProject.getContractTime()); + projectBudget.setBidsTimeBudget(estimateProject.getBidsTime()); + projectBudget.setIsSecondBudget(estimateProject.getIsSecond()); + projectBudget.setIsSecondStrBudget(estimateProject.getIsSecondStr()); + projectBudget.setSignTypeBudget(estimateProject.getSignType()); + projectBudget.setSignTypeStrBudget(estimateProject.getSignTypeStr()); + projectBudget.setResolvePlanBudget(estimateProject.getResolvePlan()); + projectBudget.setResolvePlanStrBudget(estimateProject.getResolvePlanStr()); + projectBudget.setMainContractResolvePlanBudget(estimateProject.getMainContractResolvePlan()); + projectBudget.setCalculationCollectionBudget(estimateProject.getCalculationCollection()); + + projectBudgetRepository.save(projectBudget); + } + public void estimateApprove(Integer approveStatusEstimate, Project projectInDb, Admin admin) throws Exception { projectInstanceService.startEstimateProcessInstance(projectInDb, admin); int type = projectInDb.getType(); diff --git a/src/main/resources/static/assets/js/project_budget.js b/src/main/resources/static/assets/js/project_budget.js index 38d7778..8b3f62f 100644 --- a/src/main/resources/static/assets/js/project_budget.js +++ b/src/main/resources/static/assets/js/project_budget.js @@ -201,7 +201,7 @@ $(function () { $("#saveApprove").attr('disabled', true); $("#collaboratorUrl").val($("#collaboratorUrl_span").text()); - // checkIfFillIn(); + checkIfFillIn(); var dataIncome = collectData("am-modal-prompt-input-income"); if (dataIncome.length <= 5) { @@ -328,6 +328,170 @@ $(function () { }; }); +//立项表填写检查 +function checkIfFillIn() { + var name = $("#nameBudget").val(); + var startTime = $("#startDateBudget").val(); + var endTime = $("#endDateBudget").val(); + var underwrittenMode = $("#underwrittenModeBudget").val(); + var collaborator = $("#collaboratorBudget").val(); + var advanceInterestAmount = $("#advanceInterestAmountBudget").val(); + var advancePeakAmount = $("#advancePeakAmountBudget").val(); + var contractAmount = $("#contractAmountBudget").val(); + var grossProfit = $("#grossProfitBudget").val(); + var grossProfitMargin = $("#grossProfitMarginBudget").val(); + var huizhiProductAmount = $("#huizhiProductAmountBudget").val(); + var huazhiProductAmount = $("#huazhiProductAmountBudget").val(); + var huasanProductAmount = $("#huasanProductAmountBudget").val(); + var ziguangOtherAmount = $("#ziguangOtherAmountBudget").val(); + // var industryScenario = $("#industryScenarioBudget").val(); + var customer = $("#customerBudget").val(); + var terminalCustomer = $("#terminalCustomerBudget").val(); + var valueRisk = $("#valueRiskBudget").val(); + var principal = $("#principalBudget").val(); + + if (name.length <= 0) { + window.confirm('项目名称不能为空'); + check = 1; + return; + } + + checkName(); + if (result == 1) { + window.confirm('项目名称已存在'); + check = 1; + return; + } + + if (startTime.length <= 0) { + window.confirm('项目计划开始时间不能为空'); + check = 1; + return; + } + + if (endTime.length <= 0) { + window.confirm('项目计划结束时间不能为空'); + check = 1; + return; + } + + if (startTime > endTime) { + window.confirm('开始日期应早于结束日期'); + check = 1; + return; + } + + // if (projectNo.length <= 0) { + // window.confirm('项目编号不能为空'); + // check = 1; + // return; + // } + // + // checkProjectNo(); + // if (projectNoResult == 1) { + // window.confirm('项目编号已存在'); + // check = 1; + // return; + // } + + if (underwrittenMode == 1 && (collaborator == undefined || collaborator.length <= 0)) { + window.confirm('合作对象不能为空'); + check = 1; + return; + } + + + if (underwrittenMode > 2 && (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0)) { + window.confirm('垫资利息不能为空'); + check = 1; + return; + } + + if (underwrittenMode > 2 && (advancePeakAmount == undefined || advancePeakAmount.length <= 0)) { + window.confirm('垫资峰值不能为空'); + check = 1; + return; + } + + if (contractAmount == undefined || contractAmount.length <= 0) { + window.confirm('合同金额不能为空'); + check = 1; + return; + } + + if (grossProfit == undefined || grossProfit.length <= 0) { + window.confirm('项目毛利不能为空'); + check = 1; + return; + } + + if (grossProfitMargin == undefined || grossProfitMargin.length <= 0) { + window.confirm('项目毛利率不能为空'); + check = 1; + return; + } + + if (huizhiProductAmount == undefined || huizhiProductAmount.length <= 0) { + window.confirm('汇智产品金额不能为空'); + check = 1; + return; + } + + if (huazhiProductAmount == undefined || huazhiProductAmount.length <= 0) { + window.confirm('华智产品金额不能为空'); + check = 1; + return; + } + + if (huasanProductAmount == undefined || huasanProductAmount.length <= 0) { + window.confirm('华三产品金额不能为空'); + check = 1; + return; + } + + if (ziguangOtherAmount == undefined || ziguangOtherAmount.length <= 0) { + window.confirm('其他产品金额不能为空'); + check = 1; + return; + } + + // if (industryScenario == undefined || industryScenario.length <= 0) { + // window.confirm('行业应用场景不能为空'); + // check = 1; + // return; + // } + + // if (mainContractCollectionTerms == undefined || mainContractCollectionTerms.length <= 0) { + // window.confirm('主合同收款条款不能为空'); + // check = 1; + // return; + // } + + if (customer == undefined || customer.length <= 0) { + window.confirm('客户名称不能为空'); + check = 1; + return; + } + + if (terminalCustomer == undefined || terminalCustomer.length <= 0) { + window.confirm('最终用户名称不能为空'); + check = 1; + return; + } + + if (valueRisk == undefined || valueRisk.length <= 0) { + window.confirm('价值及风险不能为空'); + check = 1; + return; + } + + if (principal == undefined || principal.length <= 0) { + window.confirm('项目负责人不能为空'); + check = 1; + return; + } +} + /** * 判断是否重名 */ diff --git a/src/main/resources/templates/admin/project_approve.ftl b/src/main/resources/templates/admin/project_approve.ftl index d3db35a..73fa5d9 100644 --- a/src/main/resources/templates/admin/project_approve.ftl +++ b/src/main/resources/templates/admin/project_approve.ftl @@ -442,7 +442,8 @@ </#if> <div class="am-tabs palm-tabs inner" data-am-tabs id="subTab"> <ul class="am-tabs-nav am-nav am-nav-tabs palm-tabs-nav"> - <li class="am-active"><a href="#tab35">预算信息</a></li> + <li class="am-active"><a href="#tab30">项目基本信息</a></li> + <li><a href="#tab35">预算信息</a></li> <li><a href="#tab31">收入明细表</a></li> <li><a href="#tab36">收款计划表</a></li> <li><a href="#tab32">采购成本明细表</a></li> @@ -451,6 +452,256 @@ </ul> </div> <div class="am-tabs-bd palm-tabs-bd"> + <div class="am-tab-panel am-fade am-in am-active" id="tab30"> + <input name="projectId" id="projectId" type="hidden" value="${projectBudget.projectId}" /> + <!--验证表单元素(validate) begin--> + <table id="myTable" class="am-table am-table-bordered"> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="6" style="text-align: center">项目基本信息</th> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">部门名称:</span></th> + <td class="table-title" colspan="2" ><input readonly value="${projectBudget.deptNameBudget!}" /></td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目编号:</span></th> + <td class="table-title" colspan="2" ><input readonly value="${projectBudget.projectNoBudget!}" /></td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目名称:</span></th> + <td class="table-title" colspan="5" > + <input readonly value="${projectBudget.nameBudget!}" /> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目类型:</span></th> + <td class="table-title" colspan="1" > + <#if projectBudget.typeBudget??> + <#if (projectBudget.typeBudget) =1> + <input readonly value="工程集成类"/> + <#elseif (projectBudget.typeBudget) =2> + <input readonly value="设备集成类"/> + <#elseif (projectBudget.typeBudget) =3> + <input readonly value="战略合作类"/> + </#if> + <#else> + <input readonly value=""/> + </#if> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目计划开始时间:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${(projectBudget.startDateBudget?string("yyyy-MM-dd"))!}"> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目计划结束时间:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${(projectBudget.endDateBudget?string("yyyy-MM-dd"))!}"> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">垫资模式:</span></th> + <td class="table-title" colspan="1" > + <#if projectBudget.underwrittenModeBudget??> + <#if (projectBudget.underwrittenModeBudget) =1> + <input readonly value="A类-不垫资"/> + <#elseif (projectBudget.underwrittenModeBudget) =3> + <input readonly value="B类-垫资(账期覆盖)"/> + <#elseif (projectBudget.underwrittenModeBudget) =4> + <input readonly value="C类-垫资(账期不覆盖)"/> + </#if> + <#else> + <input readonly value=""/> + </#if> + </td> + + <th class="table-title" colspan="4" id="noUnder0b" <#if projectBudget.underwrittenModeBudget! gt 2>hidden</#if>></th> + + <th class="table-title" colspan="1" id="noUnder1b" <#if projectBudget.underwrittenModeBudget! <= 2>hidden</#if>><span style="font-size: 15px">垫资利息:</span></th> + <td class="table-title" colspan="1" id="noUnder2b" <#if projectBudget.underwrittenModeBudget! <= 2>hidden</#if>> + <input readonly value="${Utils.format(projectBudget.advanceInterestAmountBudget)}" /> + </td> + <th class="table-title" colspan="1" id="noUnder3b" <#if projectBudget.underwrittenModeBudget! <= 2>hidden</#if>><span style="font-size: 15px">垫资峰值:</span></th> + <td class="table-title" colspan="1" id="noUnder4b" <#if projectBudget.underwrittenModeBudget! <= 2>hidden</#if>> + <input readonly value="${Utils.format(projectBudget.advancePeakAmountBudget)}" /> + </td> + + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">合作类型:</span></th> + <td class="table-title" colspan="1" id="spanMode" > + <#if projectBudget.cooperateTypeBudget??> + <#if (projectBudget.cooperateTypeBudget) =1> + <input readonly value="战略合作类"/> + <#elseif (projectBudget.cooperateTypeBudget) =2> + <input readonly value="非战略合作类"/> + </#if> + <#else> + <input readonly value=""/> + </#if> + </td> + + <th class="table-title" colspan="1" id="coop1b" <#if projectBudget.cooperateTypeBudget! != 1>hidden</#if> ><span style="font-size: 15px">合作对象:</span></th> + <td class="table-title" colspan="3" id="coop2b" <#if projectBudget.cooperateTypeBudget! != 1>hidden</#if> > + <#if projectBudget.collaboratorUrlBudget?? && projectBudget.collaboratorUrlBudget != ""> + <div class="am-form-file am-text-xs"> + <a href="${projectBudget.collaboratorUrlBudget!}" download> + <i class="am-icon-cloud-upload"></i> 下载附件 + </a> + </div> + <#else> + <div class="am-u-sm-2 am-u-md-4 input-msg"></div> + </#if> + </td> + + <th class="table-title" colspan="4" id="coop0b" <#if projectBudget.cooperateTypeBudget! == 1>hidden</#if>></th> + + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">合同金额:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${Utils.format(projectBudget.contractAmountBudget)}" /> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目毛利:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${Utils.format(projectBudget.grossProfitBudget)}" /> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目毛利率:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${Utils.format(projectBudget.grossProfitMarginBudget)}" /> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">汇智产品金额:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${Utils.format(projectBudget.huizhiProductAmountBudget, "0.00")}" /> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">华智产品金额:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${Utils.format(projectBudget.huazhiProductAmountBudget, "0.00")}" /> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">华三产品金额:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${Utils.format(projectBudget.huasanProductAmountBudget, "0.00")}" /> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">其他产品金额:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${Utils.format(projectBudget.ziguangOtherAmountBudget, "0.00")}" /> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目把握度:</span></th> + <td class="table-title" colspan="1" > + <#if projectBudget.certaintyBudget??> + <#if (projectBudget.certaintyBudget) =1> + <input readonly value="A:项目成功率80%-100%"/> + <#elseif (projectBudget.certaintyBudget) =2> + <input readonly value="B:项目成功率60%-80%"/> + <#elseif (projectBudget.certaintyBudget) =3> + <input readonly value="C:项目成功率40%-60%"/> + </#if> + <#else> + <input readonly value=""/> + </#if> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">行业场景应用:</span></th> + <td class="table-title" colspan="1" ><input readonly value="${projectBudget.industryScenarioBudget!}"/></td> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目解决方案:</span></th> + <td class="table-title" colspan="1" > + <#if projectBudget.resolvePlanBudget??> + <#if (projectBudget.resolvePlanBudget!) =1> + <input readonly value="公共服务(智慧交通、雪亮工程、治安防控体系等)"/> + <#elseif (projectBudget.resolvePlanBudget!) =2> + <input readonly value="泛行业(智慧园区、智慧医疗、智慧工地等)"/> + <#elseif (projectBudget.resolvePlanBudget!) =3> + <input readonly value="其他生态"/> + </#if> + <#else> + <input readonly value=""/> + </#if> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">客户名称:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${projectBudget.customerBudget!}" /> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">最终用户名称:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${projectBudget.terminalCustomerBudget!}" /> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">价值及风险:</span></th> + <td class="table-title" colspan="5" > + <textarea rows="5" cols="20" id="valueRiskBudget" name="valueRiskBudget" maxlength="1000" + class="am-input" style="border-style:none;" data-validate-async data-validation-message="请输入价值及风险" + placeholder="请输入价值及风险" + >${projectBudget.valueRiskBudget!}</textarea> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目负责人:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${projectBudget.principalBudget!}" /> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">预计合同签订时间:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${(projectBudget.contractTimeBudget?string("yyyy-MM-dd"))!}"> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目计划招标时间:</span></th> + <td class="table-title" colspan="1" > + <input readonly value="${(projectBudget.bidsTimeBudget?string("yyyy-MM-dd"))!}"> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">是否二次合作:</span></th> + <td class="table-title" colspan="1" > + <#if projectBudget.isSecondBudget??> + <#if (projectBudget.isSecondBudget!) =1> + <input readonly value="是"/> + <#elseif (projectBudget.isSecondBudget!) =2> + <input readonly value="否"/> + <#else > + <input readonly value=""/> + </#if> + <#else> + <input readonly value=""/> + </#if> + </td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">直签:</span></th> + <td class="table-title" colspan="3" > + <#if projectBudget.signTypeBudget??> + <#if (projectBudget.signTypeBudget!) =1> + <input readonly value="紫光汇智直接投标"/> + <#else > + <input readonly value=""/> + </#if> + <#else> + <input readonly value=""/> + </#if> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">主合同收款条款:</span></th> + <td class="table-title" colspan="5" > + <textarea rows="3" cols="20" style="border-style:none;background-color: white;" disabled="disabled" + >${projectBudget.mainContractCollectionTermsBudget!}</textarea> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">主合同具体解决方案:</span></th> + <td class="table-title" colspan="5" > + <textarea rows="3" cols="20" style="border-style:none;background-color: white;" disabled="disabled" + >${projectBudget.mainContractResolvePlanBudget!}</textarea> + </td> + </tr> + <tr class="am-text-nowrap"> + <th class="table-title" colspan="1" ><span style="font-size: 15px">计收计划:</span></th> + <td class="table-title" colspan="5" > + <textarea rows="3" cols="20" style="border-style:none;background-color: white;" disabled="disabled" + >${projectBudget.calculationCollectionBudget!}</textarea> + </td> + </tr> + </table> + </div> <div class="am-tab-panel am-fade am-in" id="tab31"> <#--<span class="am-text-lg">收入明细表</span>--> <div class="fixed-section"> @@ -1084,7 +1335,7 @@ <span class="am-text-primary"><a style="cursor: pointer" id="cost-detail">采购成本明细表</a></span> <span class="am-text-primary"><a style="cursor: pointer" id="cost-project-manage-detail">项目管理成本表</a></span> <span class="am-text-primary budget-plan-detail"><a style="cursor: pointer">资金计划表</a></span>--> - <div class="am-tab-panel am-fade am-in am-active am-scrollable-horizontal" id="tab35"> + <div class="am-tab-panel am-fade am-in am-scrollable-horizontal" id="tab35"> <div class="am-u-sm-12 am-u-md-12" style="padding:0 1.6rem 1.6rem 1rem;margin:0;"> <div class="am-btn-toolbar" style="padding-left:.5rem;"> <div class="am-btn-group am-btn-group-xs"> diff --git a/src/main/resources/templates/admin/project_budget_edit.ftl b/src/main/resources/templates/admin/project_budget_edit.ftl index 6f7995b..a3318bd 100644 --- a/src/main/resources/templates/admin/project_budget_edit.ftl +++ b/src/main/resources/templates/admin/project_budget_edit.ftl @@ -322,10 +322,10 @@ <th class="table-title" colspan="6" style="text-align: center">项目基本信息</th> </tr> <tr class="am-text-nowrap"> - <th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">部门名称:</span></th> + <th class="table-title" colspan="1" ><span style="font-size: 15px">部门名称:</span></th> <td class="table-title" colspan="2" ><input class="table-inline" readonly value="${projectBudget.deptNameBudget!}" /></td> - <th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">项目编号:</span></th> - <td class="table-title" colspan="2" ><input class="table-inline" readonly value="${projectBudget.projectNoBudget!}" /></td> + <th class="table-title" colspan="1" ><span style="font-size: 15px">项目编号:</span></th> + <td class="table-title" colspan="2" ><input class="table-inline" id="projectNoBudget" name="projectNoBudget" readonly value="${projectBudget.projectNoBudget!}" /></td> </tr> <tr class="am-text-nowrap"> <th class="table-title" colspan="1" ><span style="color: red;">*</span><span style="font-size: 15px">项目名称:</span></th> diff --git a/src/main/resources/templates/admin/project_list.ftl b/src/main/resources/templates/admin/project_list.ftl index 4ba05cb..9de391e 100644 --- a/src/main/resources/templates/admin/project_list.ftl +++ b/src/main/resources/templates/admin/project_list.ftl @@ -79,6 +79,7 @@ <input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/> <input type="hidden" id="pageNumber" name="pageNumber" value='${pageNumber!}'/> <input type="hidden" id="orderTypeStr" name="orderTypeStr" value='${orderTypeStr!""}'/> + <input type="hidden" id="pager" name="pager" value='${pager!}'/> <style> .flex-row { display: -webkit-box;