零碎需求

master
OathK1per 2022-08-26 08:49:33 +08:00
parent 2cc70466a2
commit d0ec8f382a
33 changed files with 979 additions and 125 deletions

View File

@ -5,9 +5,9 @@ package cn.palmte.work.bean;
*/
public enum CertaintyEnum {
PLAN_O(-1,""),
PLAN_A(1,"A基本确定中标,待签合同,合同签订中"),
PLAN_B(2,"B客户产品参数、商务评分、商务资质引导成功"),
PLAN_C(3,"C项目初期引导阶段");
PLAN_A(1,"A项目成功率80%-100%"),
PLAN_B(2,"B项目成功率60%-80%"),
PLAN_C(3,"C项目成功率40%-60%");
private int certainty;
private String certaintyStr;

View File

@ -5,7 +5,8 @@ package cn.palmte.work.bean;
*/
public enum SignTypeEnum {
PLAN_O(-1,""),
PLAN_A(1,"紫光汇智直接投标");
PLAN_A(1,"是"),
PLAN_B(2,"否");
private int signType;
private String signTypeStr;
@ -35,6 +36,9 @@ public enum SignTypeEnum {
if(signType == 1){
return PLAN_A;
}
if(signType == 2){
return PLAN_B;
}
return PLAN_O;
}
}

View File

@ -86,7 +86,7 @@ public class MonthlySettleController extends BaseController {
@RequestMapping("/export")
public void export(@RequestParam(value = "keywords", required = false) String keywords, HttpServletResponse httpServletResponse) throws IOException {
Map<String, String> searchInfo = getSearchInfo(keywords);
downloadHeader(httpServletResponse, Utils.generateExcelName("月度结算表"), "application/octet-stream");
downloadHeader(httpServletResponse, Utils.generateExcelName("PMO项目执行进度管理"), "application/octet-stream");
String[] headers = {"项目编号", "项目名称", "项目类型", "合同编号", "合同方", "合同金额", "合同签订时间", "最终业主", "累计已收款", "已采购累计付款", "已采购累计未付款", "超期垫资金额", "销售累计开票金额",
"销售经理", "项目经理", "收款节点", "收款要求时间", "收款金额", "实际收款时间", "实际收款金额", "实际欠收金额", "到货证明", "项目风险预警", "已计收金额", "未计收金额", "超期天数", "验收报告时间"};
String[] exportColumns = {"projectNo", "projectName", "projectType", "contractNo", "contractParty", "contractAmountRound", "contractSignTimeStr", "owner", "totalCollectRound",
@ -98,7 +98,7 @@ public class MonthlySettleController extends BaseController {
@RequestMapping("/exportSingle")
public void exportSingle(@RequestParam String id, @RequestParam String time, @RequestParam String projectName, HttpServletResponse httpServletResponse) throws IOException {
downloadHeader(httpServletResponse, Utils.generateExcelName("月度结算表明细"), "application/octet-stream");
downloadHeader(httpServletResponse, Utils.generateExcelName("PMO项目执行进度管理明细"), "application/octet-stream");
String[] headers = {"月份", "项目编号", "项目名称", "项目类型", "合同编号", "合同方", "合同金额", "合同签订时间", "最终业主", "累计已收款", "已采购累计付款", "已采购累计未付款", "超期垫资金额", "销售累计开票金额",
"销售经理", "项目经理", "收款节点", "收款要求时间", "收款金额", "实际收款时间", "实际收款金额", "实际欠收金额", "超期天数", "到货证明", "验收报告时间", "项目风险预警", "已计收金额", "未计收金额"};
String[] exportColumns = {"month", "projectNo", "projectName", "projectType", "contractNo", "contractParty", "contractAmountRound", "contractSignTimeStr", "owner", "totalCollectRound",
@ -115,7 +115,7 @@ public class MonthlySettleController extends BaseController {
public void template(HttpServletResponse response) throws Exception {
String[] headers = new String[]{"项目编号", "最终业主", "合同方", "项目名称", "合同金额", "累计已收款", "已采购累计付款", "已采购累计未付款", "超期垫资金额", "销售累计开票金额", "合同编号", "项目类型", "合同签订时间", "销售经理", "项目经理", "收款节点", "收款要求时间", "收款金额",
"实际收款时间", "实际收款金额", "实际欠收金额", "超期天数", "到货证明", "验收报告时间", "项目风险预警", "已计收金额", "未计收金额"};
downloadHeader(response, Utils.generateExcelName("月度结算表导入模板"));
downloadHeader(response, Utils.generateExcelName("PMO项目执行进度管理导入模板"));
ExportUtils exportUtils = new ExportUtils(headers);
exportUtils.write(response.getOutputStream());
}

View File

@ -28,6 +28,7 @@ import top.jfunc.common.utils.CollectionUtil;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
@ -128,7 +129,7 @@ public class ProjectController extends BaseController {
Map<String, String> searchInfo = getSearchInfo(keywords);
downloadHeader(httpServletResponse, Utils.generateExcelName("项目报表"), "application/octet-stream");
String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额",
"华三产品金额", "其他产品金额", "项目状态", "行业场景应用", "解决方案", "客户名称", "终端客户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "单方式", "战略合作对象",
"华三产品金额", "其他产品金额", "项目状态", "行业场景应用", "解决方案", "客户名称", "最终用户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "签", "战略合作对象",
"项目负责人", "价值及风险", "主合同收款条款", "主合同具体解决方案", "计收计划", "审核状态", "当前审核人", "项目创建者", "部门名称", "项目开始时间", "项目结束时间", "最后更新时间"};
String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitRound", "grossProfitMarginRound", "certaintyStr", "huizhiRound", "huazhiRound",
"huasanRound", "ziguangRound", "statusDesc", "industryScenario", "resolvePlan", "customer", "terminalCustomer", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "collaborator",
@ -148,12 +149,12 @@ public class ProjectController extends BaseController {
response.setHeader("Content-Type", "application/vnd.ms-excel");
ServletOutputStream outputStream = response.getOutputStream();
ExportExcelUtils exportExcelUtils = new ExportExcelUtils();
String[] headers0 = {"部门名称", "项目编号", "项目名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "终端客户名称", "价值及风险"};
String[] headers0 = {"部门名称", "项目编号", "项目名称", "项目类型", "项目计划开始时间", "项目计划结束时间", "垫资模式", "合作对象", "垫资利息", "垫资峰值", "合同金额", "项目毛利", "项目毛利率", "华智产品金额", "汇智产品金额", "华三产品金额", "其他产品金额", "项目把握度", "行业场景应用", "项目解决方案", "客户名称", "最终用户名称", "价值及风险"};
String[] columns0 = {"deptName", "projectNo", "name", "typeDesc", "startDate", "endDate", "underwrittenModeStr", "collaborator", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitRound", "grossProfitMarginRound", "huazhiRound", "huizhiRound", "huasanRound", "ziguangRound", "certaintyStr", "industryScenario", "resolvePlanStr", "customer", "terminalCustomer", "valueRisk"};
exportExcelUtils.exportProjectExcel(headers0, columns0, project, "yyyy-MM-dd", 0, "项目基本信息", outputStream);
String[] headers1 = {"项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "单方式", "主合同收款条款", "主合同具体解决方案", "计收计划"};
exportExcelUtils.exportProjectExcel(headers0, columns0, project, "yyyy-MM-dd", 0, "项目立项(概算)基本信息", outputStream);
String[] headers1 = {"项目负责人", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "签", "主合同收款条款", "主合同具体解决方案", "计收计划"};
String[] columns1 = {"principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection"};
exportExcelUtils.exportProjectExcel(headers1, columns1, project, "yyyy-MM-dd", 0, "项目其他信息", outputStream);
exportExcelUtils.exportProjectExcel(headers1, columns1, project, "yyyy-MM-dd", 0, "项目立项(概算)其他信息", outputStream);
BudgetBean budgetBean = projectBudgetService.getBudget(project);
if (project.getStatus() < 5) {
exportExcelUtils.end(outputStream);
@ -179,9 +180,17 @@ public class ProjectController extends BaseController {
String[] headers2 = {"序号", "类别", "名称", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)"};
String[] columns2 = {"tempId", "type", "name", "unit", "amount", "price", "taxRate", "totalTaxInclude", "totalTaxExclude", "totalTax"};
exportExcelUtils.exportIncomeDetailExcel(headers2, columns2, project, budgetBean, budgetIncomeDetail, incomeTotalAmount, "yyyy-MM-dd", 0, "收入明细表", outputStream);
//收入计划
List<ProjectBudgetIncomePlanDetail> budgetIncomePlanDetail = projectBudgetService.getBudgetIncomePlanDetail(project);
BigDecimal incomePlanTotalReceiveAmount = projectBudgetService.getBudgetIncomePlanReceiveAmount(project);
String[] headers6 = {"序号", "收款节点", "收款时间", "收款金额(元)"};
String[] columns6 = {"tempId", "receivePoint", "receiveTime", "receiveAmount"};
exportExcelUtils.exportIncomePlanDetailExcel(headers6, columns6, project, budgetBean, budgetIncomePlanDetail, incomePlanTotalReceiveAmount, "yyyy-MM-dd", 0, "收入计划表", outputStream);
//成本明细
List<ProjectBudgetCostDetail> budgetCostDetail = projectBudgetService.getBudgetCostDetail(project);
Integer costTotalAmount = projectBudgetService.getBudgetCostAmount(project);
BigDecimal costUnderwrittenAmountTotal = projectBudgetService.getBudgetCostUnderwrittenAmountTotal(project);
BigDecimal costPayAmountTotal = projectBudgetService.getBudgetCostPayAmountTotal(project);
List<ProcurementType> procurementTypes = procurementTypeService.allProcurementTypeList();
Map<Integer, String> procurementMap = procurementTypes.stream().collect(Collectors.toMap(ProcurementType::getId, ProcurementType::getName));
Set<String> rates2 = new HashSet<>();
@ -198,15 +207,16 @@ public class ProjectController extends BaseController {
} else {
costTaxRates = costTaxSb.toString();
}
String[] headers3 = {"序号", "大类", "类别", "名称", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)"};
String[] columns3 = {"tempId", "type", "category", "name", "unit", "amount", "price", "taxRate", "totalTaxInclude", "totalTaxExclude", "totalTax"};
exportExcelUtils.exportCostDetailExcel(headers3, columns3, project, budgetBean, budgetCostDetail, costTotalAmount, procurementMap, "yyyy-MM-dd", 0, "采购成本明细表", outputStream);
String[] headers3 = {"序号", "大类", "类别", "名称", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)", "签约方", "是否垫资", "预估垫资金额(元)", "支出时间", "支出金额(元)", "付款方式", "备注"};
String[] columns3 = {"tempId", "type", "category", "name", "unit", "amount", "price", "taxRate", "totalTaxInclude", "totalTaxExclude", "totalTax", "contractParty", "isUnderwritten", "underwrittenAmount", "payTime", "payAmount", "payWay", "remark"};
exportExcelUtils.exportCostDetailExcel(headers3, columns3, project, budgetBean, budgetCostDetail, costTotalAmount, costUnderwrittenAmountTotal, costPayAmountTotal, procurementMap, "yyyy-MM-dd", 0, "采购成本明细表", outputStream);
//项目管理成本明细
List<ProjectBudgetCostProjectManageDetail> budgetCostProjectManageDetail = projectBudgetService.getBudgetCostProjectManageDetail(project);
Integer costProjectManageTotalAmount = projectBudgetService.getBudgetCostProjectManageAmount(project);
String[] headers4 = {"序号", "财务费用类别", "业务项目", "项目明细", "单位", "数量", "单价", "总金额(元)", "预估计算方法", "预估依据", "备注"};
String[] columns4 = {"tempId", "type", "name", "detail", "unit", "amount", "price", "total", "predictMethod", "predictWhy", "remark"};
exportExcelUtils.exportCostManageDetailExcel(headers4, columns4, project, budgetBean, budgetCostProjectManageDetail, costProjectManageTotalAmount, "yyyy-MM-dd", 0, "项目管理成本表", outputStream);
BigDecimal managePayAmountTotal = projectBudgetService.getBudgetCostProjectManagePayAmount(project);
String[] headers4 = {"序号", "财务费用类别", "业务项目", "项目明细", "单位", "数量", "单价", "总金额(元)", "支出时间", "支出金额(元)", "预估计算方法", "预估依据", "备注"};
String[] columns4 = {"tempId", "type", "name", "detail", "unit", "amount", "price", "total", "payTime", "payAmount", "predictMethod", "predictWhy", "remark"};
exportExcelUtils.exportCostManageDetailExcel(headers4, columns4, project, budgetBean, budgetCostProjectManageDetail, costProjectManageTotalAmount, managePayAmountTotal, "yyyy-MM-dd", 0, "项目管理成本表", outputStream);
//资金计划明细
// ProjectBudgetPlanDetail projectBudgetPlanDetailTotalTitle = projectBudgetService.getProjectBudgetPlanDetailTotalTitle(project,
// budgetIncomeDetail,
@ -338,6 +348,11 @@ public class ProjectController extends BaseController {
}
model.put("incomeDetails", budgetIncomeDetail);
model.put("incomeTotalAmount", projectBudgetService.getBudgetIncomeAmount(project));
//收入计划
List<ProjectBudgetIncomePlanDetail> budgetIncomePlanDetail = projectBudgetService.getBudgetIncomePlanDetail(project);
model.put("incomePlanDetails", budgetIncomePlanDetail);
BigDecimal incomePlanTotalReceiveAmount = projectBudgetService.getBudgetIncomePlanReceiveAmount(project);
model.put("incomePlanTotal", incomePlanTotalReceiveAmount);
//成本明细
List<ProjectBudgetCostDetail> budgetCostDetail = projectBudgetService.getBudgetCostDetail(project);
Set<String> rates2 = new HashSet<>();
@ -355,10 +370,13 @@ public class ProjectController extends BaseController {
}
model.put("costDetails", budgetCostDetail);
model.put("costTotalAmount", projectBudgetService.getBudgetCostAmount(project));
model.put("costUnderwrittenAmountTotal", projectBudgetService.getBudgetCostUnderwrittenAmountTotal(project));
model.put("costPayAmountTotal", projectBudgetService.getBudgetCostPayAmountTotal(project));
//项目管理成本明细
List<ProjectBudgetCostProjectManageDetail> budgetCostProjectManageDetail = projectBudgetService.getBudgetCostProjectManageDetail(project);
model.put("costProjectManageDetails", budgetCostProjectManageDetail);
model.put("costProjectManageTotalAmount", projectBudgetService.getBudgetCostProjectManageAmount(project));
model.put("managePayAmountTotal", projectBudgetService.getBudgetCostProjectManagePayAmount(project));
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
//资金计划明细
model.put("projectBudgetPlanDetails", projectBudgetPlanDetails);
@ -420,6 +438,27 @@ public class ProjectController extends BaseController {
return ResponseMsg.buildSuccessMsg("成功");
}
/**
*
*/
@RequestMapping("/budgetEditSaveIncomePlanDetail")
@ResponseBody
public ResponseMsg budgetEditSaveIncomePlanDetail(@RequestBody String body) {
JSONObject jsonObject = JSON.parseObject(body);
JSONArray details = jsonObject.getJSONArray(DETAILS);
List<ProjectBudgetIncomePlanDetailTemp> detailList = new ArrayList<>(details.size());
for (int i = 0; i < details.size(); i++) {
ProjectBudgetIncomePlanDetailTemp detail = details.getObject(i, ProjectBudgetIncomePlanDetailTemp.class);
detailList.add(detail);
}
Project project = projectService.getProject(jsonObject.getInteger(PROJECT_ID));
projectBudgetService.saveBudgetIncomePlanDetailTemp(project, detailList);
return ResponseMsg.buildSuccessMsg("成功");
}
/**
*
*/
@ -468,6 +507,8 @@ public class ProjectController extends BaseController {
detail.setName("商务及专项验收费用");
} else if ("7".equals(detail.getName1())) {
detail.setName("办公费用");
} else if ("9".equals(detail.getName1())) {
detail.setName("保证金");
}
detail.setIsDiy(0);
}
@ -553,7 +594,7 @@ public class ProjectController extends BaseController {
Map<String, String> searchInfo = getSearchInfo(keywords);
downloadHeader(httpServletResponse, Utils.generateExcelName("待我审核项目报表"), "application/octet-stream");
String[] headers = {"项目编号", "项目名称", "项目类型", "垫资模式", "垫资利息", "垫资峰值", "项目合同金额", "项目毛利", "项目毛利率", "项目把握度", "汇智产品金额", "华智产品金额",
"华三产品金额", "其他产品金额", "项目状态", "行业场景应用", "解决方案", "客户名称", "终端客户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "单方式", "战略合作对象",
"华三产品金额", "其他产品金额", "项目状态", "行业场景应用", "解决方案", "客户名称", "最终用户名称", "预计合同签订时间", "项目计划招标时间", "是否二次合作", "签", "战略合作对象",
"项目负责人", "价值及风险", "主合同收款条款", "主合同具体解决方案", "计收计划", "审核状态", "当前审核人", "项目创建者", "部门名称", "项目开始时间", "项目结束时间", "最后更新时间"};
String[] exportColumns = {"projectNo", "name", "typeDesc", "underwrittenModeStr", "advanceInterestAmountRound", "advancePeakAmountRound", "contractRound", "grossProfitRound", "grossProfitMarginRound", "certaintyStr", "huizhiRound", "huazhiRound",
"huasanRound", "ziguangRound", "statusDesc", "industryScenario", "resolvePlan", "customer", "terminalCustomer", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "collaborator",
@ -594,13 +635,22 @@ public class ProjectController extends BaseController {
List<ProjectBudgetIncomeDetail> budgetIncomeDetail = projectBudgetService.getBudgetIncomeDetail(project);
model.put("incomeDetails", budgetIncomeDetail);
model.put("incomeTotalAmount", projectBudgetService.getBudgetIncomeAmount(project));
//收入计划
List<ProjectBudgetIncomePlanDetail> budgetIncomePlanDetail = projectBudgetService.getBudgetIncomePlanDetail(project);
model.put("incomePlanDetails", budgetIncomePlanDetail);
BigDecimal incomePlanTotalReceiveAmount = projectBudgetService.getBudgetIncomePlanReceiveAmount(project);
model.put("incomePlanTotal", incomePlanTotalReceiveAmount);
//成本明细
List<ProjectBudgetCostDetail> budgetCostDetail = projectBudgetService.getBudgetCostDetail(project);
model.put("costDetails", budgetCostDetail);
model.put("costTotalAmount", projectBudgetService.getBudgetCostAmount(project));
model.put("costUnderwrittenAmountTotal", projectBudgetService.getBudgetCostUnderwrittenAmountTotal(project));
model.put("costPayAmountTotal", projectBudgetService.getBudgetCostPayAmountTotal(project));
//项目管理成本明细
model.put("costProjectManageDetails", projectBudgetService.getBudgetCostProjectManageDetail(project));
List<ProjectBudgetCostProjectManageDetail> budgetCostProjectManageDetail = projectBudgetService.getBudgetCostProjectManageDetail(project);
model.put("costProjectManageDetails", budgetCostProjectManageDetail);
model.put("costProjectManageTotalAmount", projectBudgetService.getBudgetCostProjectManageAmount(project));
model.put("managePayAmountTotal", projectBudgetService.getBudgetCostProjectManagePayAmount(project));
List<ProjectBudgetPlanDetail> projectBudgetPlanDetails = projectBudgetService.getProjectBudgetPlanDetails(project);
//资金计划明细
model.put("projectBudgetPlanDetails", projectBudgetPlanDetails);

View File

@ -114,7 +114,7 @@ public class Project {
@Column(name = "customer")
private String customer;
/**
*
*
*/
@Column(name = "terminal_customer")
private String terminalCustomer;

View File

@ -4,6 +4,7 @@ import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
@MappedSuperclass
public class ProjectBudgetCostDetailBase {
@ -35,6 +36,28 @@ public class ProjectBudgetCostDetailBase {
@Column(name = "tax_rate")
private BigDecimal taxRate;
@Column(name = "contract_party")
private String contractParty;
@Column(name = "is_underwritten")
private int isUnderwritten;
@Column(name = "underwritten_amount")
private BigDecimal underwrittenAmount;
@Column(name = "pay_time")
@Temporal(TemporalType.TIMESTAMP)
private Date payTime;
@Column(name = "pay_amount")
private BigDecimal payAmount;
@Column(name = "pay_way")
private String payWay;
@Column(name = "remark")
private String remark;
public Integer getId() {
return id;
}
@ -107,6 +130,62 @@ public class ProjectBudgetCostDetailBase {
this.taxRate = taxRate;
}
public String getContractParty() {
return contractParty;
}
public void setContractParty(String contractParty) {
this.contractParty = contractParty;
}
public int getIsUnderwritten() {
return isUnderwritten;
}
public void setIsUnderwritten(int isUnderwritten) {
this.isUnderwritten = isUnderwritten;
}
public BigDecimal getUnderwrittenAmount() {
return underwrittenAmount;
}
public void setUnderwrittenAmount(BigDecimal underwrittenAmount) {
this.underwrittenAmount = underwrittenAmount;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public BigDecimal getPayAmount() {
return payAmount;
}
public void setPayAmount(BigDecimal payAmount) {
this.payAmount = payAmount;
}
public String getPayWay() {
return payWay;
}
public void setPayWay(String payWay) {
this.payWay = payWay;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public BigDecimal getTotalTaxInclude(){
if(null == price){
return null;

View File

@ -3,10 +3,18 @@ package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.math.BigDecimal;
import java.util.List;
public interface ProjectBudgetCostDetailRepository extends JpaRepository<ProjectBudgetCostDetail,Integer> {
List<ProjectBudgetCostDetail> findAllByProjectIdEquals(int id);
@Query(value = "select sum(amount) from project_budget_cost_detail where project_id = ?1", nativeQuery = true)
Integer findAmountByProject(int projectId);}
Integer findAmountByProject(int projectId);
@Query(value = "select sum(pay_amount) from project_budget_cost_detail where project_id = ?1", nativeQuery = true)
BigDecimal findPayAmountByProject(int id);
@Query(value = "select sum(underwritten_amount) from project_budget_cost_detail where project_id = ?1", nativeQuery = true)
BigDecimal findUnderwrittenAmountByProject(int id);
}

View File

@ -20,6 +20,13 @@ public class ProjectBudgetCostDetailTemp extends ProjectBudgetCostDetailBase{
detail.setAmount(getAmount());
detail.setPrice(getPrice());
detail.setTaxRate(getTaxRate());
detail.setContractParty(getContractParty());
detail.setIsUnderwritten(getIsUnderwritten());
detail.setUnderwrittenAmount(getUnderwrittenAmount());
detail.setPayTime(getPayTime());
detail.setPayAmount(getPayAmount());
detail.setPayWay(getPayWay());
detail.setRemark(getRemark());
return detail;
}
}

View File

@ -4,6 +4,7 @@ import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
@MappedSuperclass
public class ProjectBudgetCostProjectManageDetailBase {
@ -31,6 +32,13 @@ public class ProjectBudgetCostProjectManageDetailBase {
private int amount;
private BigDecimal price;
@Column(name = "pay_time")
@Temporal(TemporalType.TIMESTAMP)
private Date payTime;
@Column(name = "pay_amount")
private BigDecimal payAmount;
@Column(name = "predict_method")
private String predictMethod;
@Column(name = "predict_why")
@ -104,6 +112,22 @@ public class ProjectBudgetCostProjectManageDetailBase {
this.price = price;
}
public Date getPayTime() {
return payTime;
}
public void setPayTime(Date payTime) {
this.payTime = payTime;
}
public BigDecimal getPayAmount() {
return payAmount;
}
public void setPayAmount(BigDecimal payAmount) {
this.payAmount = payAmount;
}
public String getDetail() {
return detail;
}

View File

@ -3,6 +3,7 @@ package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.math.BigDecimal;
import java.util.List;
public interface ProjectBudgetCostProjectManageDetailRepository extends JpaRepository<ProjectBudgetCostProjectManageDetail,Integer> {
@ -10,4 +11,7 @@ public interface ProjectBudgetCostProjectManageDetailRepository extends JpaRepos
@Query(value = "select sum(amount) from project_budget_cost_project_manage_detail where project_id = ?1", nativeQuery = true)
Integer findAmountByProject(int id);
@Query(value = "select sum(pay_amount) from project_budget_cost_project_manage_detail where project_id = ?1", nativeQuery = true)
BigDecimal findPayAmountByProject(int id);
}

View File

@ -20,6 +20,8 @@ public class ProjectBudgetCostProjectManageDetailTemp extends ProjectBudgetCostP
detail.setUnit(getUnit());
detail.setAmount(getAmount());
detail.setPrice(getPrice());
detail.setPayTime(getPayTime());
detail.setPayAmount(getPayAmount());
detail.setPredictMethod(getPredictMethod());
detail.setPredictWhy(getPredictWhy());
detail.setRemark(getRemark());

View File

@ -0,0 +1,12 @@
package cn.palmte.work.model;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
*
*/
@Entity
@Table(name = "project_budget_income_plan_detail")
public class ProjectBudgetIncomePlanDetail extends ProjectBudgetIncomePlanDetailBase{
}

View File

@ -0,0 +1,72 @@
package cn.palmte.work.model;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.math.BigDecimal;
import java.util.Date;
@MappedSuperclass
public class ProjectBudgetIncomePlanDetailBase {
/**
* id
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@GenericGenerator(name = "persistenceGenerator", strategy = "increment")
private Integer id;
@Column(name = "project_id")
private int projectId;
@Column(name = "receive_point")
private String receivePoint;
@Column(name = "receive_time")
@Temporal(TemporalType.TIMESTAMP)
private Date receiveTime;
@Column(name = "receive_amount")
private BigDecimal receiveAmount;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getProjectId() {
return projectId;
}
public void setProjectId(int projectId) {
this.projectId = projectId;
}
public String getReceivePoint() {
return receivePoint;
}
public void setReceivePoint(String receivePoint) {
this.receivePoint = receivePoint;
}
public Date getReceiveTime() {
return receiveTime;
}
public void setReceiveTime(Date receiveTime) {
this.receiveTime = receiveTime;
}
public BigDecimal getReceiveAmount() {
return receiveAmount;
}
public void setReceiveAmount(BigDecimal receiveAmount) {
this.receiveAmount = receiveAmount;
}
}

View File

@ -0,0 +1,14 @@
package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.math.BigDecimal;
import java.util.List;
public interface ProjectBudgetIncomePlanDetailRepository extends JpaRepository<ProjectBudgetIncomePlanDetail,Integer> {
List<ProjectBudgetIncomePlanDetail> findAllByProjectIdEquals(int id);
@Query(value = "select sum(receive_amount) from project_budget_income_plan_detail where project_id = ?1", nativeQuery = true)
BigDecimal findReceiveAmountByProject(int projectId);
}

View File

@ -0,0 +1,20 @@
package cn.palmte.work.model;
import javax.persistence.Entity;
import javax.persistence.Table;
/**
*
*/
@Entity
@Table(name = "project_budget_income_plan_detail_temp")
public class ProjectBudgetIncomePlanDetailTemp extends ProjectBudgetIncomePlanDetailBase{
public ProjectBudgetIncomePlanDetail toProjectBudgetIncomePlanDetail(){
ProjectBudgetIncomePlanDetail projectBudgetIncomePlanDetail = new ProjectBudgetIncomePlanDetail();
projectBudgetIncomePlanDetail.setProjectId(getProjectId());
projectBudgetIncomePlanDetail.setReceivePoint(getReceivePoint());
projectBudgetIncomePlanDetail.setReceiveTime(getReceiveTime());
projectBudgetIncomePlanDetail.setReceiveAmount(getReceiveAmount());
return projectBudgetIncomePlanDetail;
}
}

View File

@ -0,0 +1,9 @@
package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface ProjectBudgetIncomePlanDetailTempRepository extends JpaRepository<ProjectBudgetIncomePlanDetailTemp,Integer> {
List<ProjectBudgetIncomePlanDetailTemp> findAllByProjectIdEquals(int id);
}

View File

@ -30,6 +30,10 @@ public class ProjectBudgetService {
@Autowired
private ProjectBudgetIncomeDetailTempRepository projectBudgetIncomeDetailTempRepository;
@Autowired
private ProjectBudgetIncomePlanDetailRepository projectBudgetIncomePlanDetailRepository;
@Autowired
private ProjectBudgetIncomePlanDetailTempRepository projectBudgetIncomePlanDetailTempRepository;
@Autowired
private ProjectBudgetCostDetailRepository projectBudgetCostDetailRepository;
@Autowired
private ProjectBudgetCostDetailTempRepository projectBudgetCostDetailTempRepository;
@ -384,6 +388,61 @@ public class ProjectBudgetService {
public Integer getBudgetIncomeAmount(Project project){
return projectBudgetIncomeDetailRepository.findAmountByProject(project.getId());
}
/**
*
*/
public void clearBudgetIncomePlanDetail(Project project){
List<ProjectBudgetIncomePlanDetail> incomePlanDetails = projectBudgetIncomePlanDetailRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(incomePlanDetails)){
projectBudgetIncomePlanDetailRepository.deleteInBatch(incomePlanDetails);
}
}
public void clearBudgetIncomePlanDetailTemp(Project project){
List<ProjectBudgetIncomePlanDetailTemp> incomePlanDetails = projectBudgetIncomePlanDetailTempRepository.findAllByProjectIdEquals(project.getId());
if(CollectionUtil.isNotEmpty(incomePlanDetails)){
projectBudgetIncomePlanDetailTempRepository.deleteInBatch(incomePlanDetails);
}
}
/**
*
*/
@Transactional(rollbackFor = RuntimeException.class)
public void saveBudgetIncomePlanDetail(Project project, List<ProjectBudgetIncomePlanDetail> detailList){
clearBudgetIncomePlanDetail(project);
if(CollectionUtil.isNotEmpty(detailList)){
for (ProjectBudgetIncomePlanDetail projectBudgetIncomePlanDetail : detailList) {
projectBudgetIncomePlanDetail.setProjectId(project.getId());
}
projectBudgetIncomePlanDetailRepository.save(detailList);
}
}
@Transactional(rollbackFor = RuntimeException.class)
public void saveBudgetIncomePlanDetailTemp(Project project, List<ProjectBudgetIncomePlanDetailTemp> detailList){
clearBudgetIncomePlanDetailTemp(project);
if(CollectionUtil.isNotEmpty(detailList)){
for (ProjectBudgetIncomePlanDetailTemp projectBudgetIncomePlanDetail : detailList) {
projectBudgetIncomePlanDetail.setProjectId(project.getId());
}
projectBudgetIncomePlanDetailTempRepository.save(detailList);
}
}
/**
*
*/
public List<ProjectBudgetIncomePlanDetail> getBudgetIncomePlanDetail(Project project){
return projectBudgetIncomePlanDetailRepository.findAllByProjectIdEquals(project.getId());
}
/**
*
*/
public BigDecimal getBudgetIncomePlanReceiveAmount(Project project){
return projectBudgetIncomePlanDetailRepository.findReceiveAmountByProject(project.getId());
}
/**
*
*/
@ -438,6 +497,18 @@ public class ProjectBudgetService {
public Integer getBudgetCostAmount(Project project){
return projectBudgetCostDetailRepository.findAmountByProject(project.getId());
}
/**
*
*/
public BigDecimal getBudgetCostUnderwrittenAmountTotal(Project project){
return projectBudgetCostDetailRepository.findUnderwrittenAmountByProject(project.getId());
}
/**
*
*/
public BigDecimal getBudgetCostPayAmountTotal(Project project){
return projectBudgetCostDetailRepository.findPayAmountByProject(project.getId());
}
/**
*
*/
@ -497,6 +568,12 @@ public class ProjectBudgetService {
public Integer getBudgetCostProjectManageAmount(Project project){
return projectBudgetCostProjectManageDetailRepository.findAmountByProject(project.getId());
}
/**
*
*/
public BigDecimal getBudgetCostProjectManagePayAmount(Project project){
return projectBudgetCostProjectManageDetailRepository.findPayAmountByProject(project.getId());
}
private List<ProjectBudgetCostProjectManageDetail> getFixedNotDeletable() {
List<ProjectBudgetCostProjectManageDetail> projectManageDetails = new ArrayList<>(6);
for (String fixedProjectManageDetail : fixedProjectManageDetails) {
@ -819,6 +896,14 @@ public class ProjectBudgetService {
.collect(Collectors.toList());
projectBudgetIncomeDetailRepository.save(incomeDetails);
}
//收入计划
List<ProjectBudgetIncomePlanDetailTemp> projectBudgetIncomePlanDetailTemps = projectBudgetIncomePlanDetailTempRepository.findAllByProjectIdEquals(p.getId());
if(CollectionUtil.isNotEmpty(projectBudgetIncomePlanDetailTemps)){
List<ProjectBudgetIncomePlanDetail> incomePlanDetails = projectBudgetIncomePlanDetailTemps.stream()
.map(ProjectBudgetIncomePlanDetailTemp::toProjectBudgetIncomePlanDetail)
.collect(Collectors.toList());
projectBudgetIncomePlanDetailRepository.save(incomePlanDetails);
}
//成本明细
List<ProjectBudgetCostDetailTemp> projectBudgetCostDetailTemps = projectBudgetCostDetailTempRepository.findAllByProjectIdEquals(p.getId());
if(CollectionUtil.isNotEmpty(projectBudgetCostDetailTemps)){
@ -848,6 +933,8 @@ public class ProjectBudgetService {
private void clearBudgetDetail(Project p) {
//收入明细
clearBudgetIncomeDetail(p);
//收入明细
clearBudgetIncomePlanDetail(p);
//成本明细
clearBudgetCostDetail(p);
//项目管理明细
@ -855,8 +942,4 @@ public class ProjectBudgetService {
//资金计划明细
clearBudgetPlanDetail(p);
}
public void findAll(Project project) {
}
}

View File

@ -14,6 +14,7 @@ import top.jfunc.common.db.utils.Pagination;
import top.jfunc.common.utils.CollectionUtil;
import top.jfunc.common.utils.StrUtil;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@ -190,6 +191,10 @@ public class ProjectService {
project.setCollaborator(null);
project.setCollaboratorUrl(null);
}
if (project.getUnderwrittenMode() <= 2) {
project.setAdvancePeakAmount(new BigDecimal(0));
project.setAdvanceInterestAmount(new BigDecimal(0));
}
project.setProjectNo(projectNo);
project.setTypeDesc(TypeEnum.parseType(project.getType()).getTypeDesc());
project.setUnderwrittenModeStr(UnderwrittenModeEnum.parseUnderwrittenMode(project.getUnderwrittenMode()).getUnderwrittenModeStr());
@ -249,6 +254,13 @@ public class ProjectService {
projectInDb.setCollaborator(project.getCollaborator());
projectInDb.setCollaboratorUrl(project.getCollaboratorUrl());
}
if (project.getUnderwrittenMode() <= 2) {
projectInDb.setAdvancePeakAmount(new BigDecimal(0));
projectInDb.setAdvanceInterestAmount(new BigDecimal(0));
} else {
projectInDb.setAdvanceInterestAmount(project.getAdvanceInterestAmount());
projectInDb.setAdvancePeakAmount(project.getAdvancePeakAmount());
}
projectInDb.setGrossProfit(project.getGrossProfit());
projectInDb.setGrossProfitMargin(project.getGrossProfitMargin());
projectInDb.setStartDate(project.getStartDate());
@ -261,8 +273,6 @@ public class ProjectService {
projectInDb.setPrincipal(project.getPrincipal());
projectInDb.setContractTime(project.getContractTime());
projectInDb.setBidsTime(project.getBidsTime());
projectInDb.setAdvanceInterestAmount(project.getAdvanceInterestAmount());
projectInDb.setAdvancePeakAmount(project.getAdvancePeakAmount());
projectInDb.setMainContractCollectionTerms(project.getMainContractCollectionTerms());
projectInDb.setMainContractResolvePlan(project.getMainContractResolvePlan());
projectInDb.setCalculationCollection(project.getCalculationCollection());

View File

@ -1042,7 +1042,7 @@ public class ExportExcelUtils {
totalCell.setCellValue("总计");
} else if (i == 4) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(incomeTotalAmount);
totalCell.setCellValue((incomeTotalAmount == null) ? 0 : incomeTotalAmount);
} else if (i == 7) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(budgetBean.getIncomeTotalTaxInclude()));
@ -1059,7 +1059,76 @@ public class ExportExcelUtils {
}
}
public void exportCostDetailExcel(String[] headers, String[] columns, Project project, BudgetBean budgetBean, List<ProjectBudgetCostDetail> budgetCostDetail, Integer costTotalAmount, Map<Integer, String> procurementMap, String pattern, int rowIndex, String sheetName, ServletOutputStream outputStream) {
public void exportIncomePlanDetailExcel(String[] headers, String[] columns, Project project, BudgetBean budgetBean, List<ProjectBudgetIncomePlanDetail> budgetIncomePlanDetail, BigDecimal incomePlanTotal, String pattern, int rowIndex, String sheetName, ServletOutputStream outputStream) {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
sheet.setDefaultColumnWidth((short)20);
Font font3 = workbook.createFont();
font3.setColor(HSSFColor.HSSFColorPredefined.BLUE.getIndex());
Row title = sheet.createRow(index++);
for (int i = 0; i < headers.length; i++) {
Cell firstCell = title.createCell(i);
firstCell.setCellStyle(style);
firstCell.setCellType(CellType.STRING);
firstCell.setCellValue(headers[i]);
}
for (int i = 0; i < budgetIncomePlanDetail.size(); i++) {
ProjectBudgetIncomePlanDetail incomePlanDetail = budgetIncomePlanDetail.get(i);
Row row = sheet.createRow(index++);
for (int j = 0; j < headers.length; j++) {
Cell secondCell = row.createCell(j);
secondCell.setCellStyle(style2);
Object value = ObjectKit.get(incomePlanDetail, columns[j]);
if ("tempId".equals(columns[j])) {
value = i + 1;
}
if (value == null) {
secondCell.setCellType(CellType.STRING);
secondCell.setCellValue("");
} else {
if (value instanceof Integer) {
secondCell.setCellType(CellType.NUMERIC);
secondCell.setCellValue((int) value);
} else if (value instanceof Long) {
secondCell.setCellType(CellType.NUMERIC);
secondCell.setCellValue((long) value);
} else if (value instanceof Double) {
secondCell.setCellType(CellType.NUMERIC);
secondCell.setCellValue((double) value);
} else if (value instanceof BigDecimal) {
secondCell.setCellType(CellType.NUMERIC);
secondCell.setCellValue(Utils.format(((BigDecimal) value)));
} else if (value instanceof Date) {
secondCell.setCellType(CellType.STRING);
String date_str = DateKit.toStr((Date) value, pattern);
secondCell.setCellValue(date_str);
} else {
secondCell.setCellType(CellType.STRING);
secondCell.setCellValue(value.toString());
}
}
}
}
Row total = sheet.createRow(index);
for (int i = 0; i < headers.length; i++) {
Cell totalCell = total.createCell(i);
totalCell.setCellStyle(style2);
if (i == 0) {
totalCell.setCellType(CellType.STRING);
totalCell.setCellValue("总计");
} else if (i == 3) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(incomePlanTotal));
} else {
totalCell.setCellType(CellType.STRING);
totalCell.setCellValue("");
}
}
}
public void exportCostDetailExcel(String[] headers, String[] columns, Project project, BudgetBean budgetBean, List<ProjectBudgetCostDetail> budgetCostDetail, Integer costTotalAmount, BigDecimal costUnderwrittenAmountTotal, BigDecimal costPayAmountTotal, Map<Integer, String> procurementMap, String pattern, int rowIndex, String sheetName, ServletOutputStream outputStream) {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
@ -1094,6 +1163,14 @@ public class ExportExcelUtils {
}
} else if ("category".equals(columns[j])) {
value = procurementMap.get(value);
} else if ("isUnderwritten".equals(columns[j])) {
if ((Integer) value == 0) {
value = "";
} else if ((Integer) value == 1) {
value = "是";
} else if ((Integer) value == 2) {
value = "否";
}
}
if (value == null) {
secondCell.setCellType(CellType.STRING);
@ -1131,7 +1208,7 @@ public class ExportExcelUtils {
totalCell.setCellValue("总计");
} else if (i == 5) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(costTotalAmount);
totalCell.setCellValue((costTotalAmount == null) ? 0 : costTotalAmount);
} else if (i == 8) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(budgetBean.getCostPurchaseTotalTaxInclude()));
@ -1141,6 +1218,12 @@ public class ExportExcelUtils {
} else if (i == 10) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(budgetBean.getCostPurchaseTotalTax()));
} else if (i == 13) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(costUnderwrittenAmountTotal));
} else if (i == 15) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(costPayAmountTotal));
} else {
totalCell.setCellType(CellType.STRING);
totalCell.setCellValue("");
@ -1148,7 +1231,7 @@ public class ExportExcelUtils {
}
}
public void exportCostManageDetailExcel(String[] headers, String[] columns, Project project, BudgetBean budgetBean, List<ProjectBudgetCostProjectManageDetail> budgetCostProjectManageDetail, Integer costProjectManageTotalAmount, String pattern, int rowIndex, String sheetName, ServletOutputStream outputStream) {
public void exportCostManageDetailExcel(String[] headers, String[] columns, Project project, BudgetBean budgetBean, List<ProjectBudgetCostProjectManageDetail> budgetCostProjectManageDetail, Integer costProjectManageTotalAmount, BigDecimal managePayAmountTotal, String pattern, int rowIndex, String sheetName, ServletOutputStream outputStream) {
// 遍历集合数据,产生数据行
int index = rowIndex;
XSSFSheet sheet = workbook.createSheet(sheetName);
@ -1178,6 +1261,8 @@ public class ExportExcelUtils {
value = "业务费用";
} else if ((Integer) value == 3) {
value = "其他费用";
} else if ((Integer) value == 4) {
value = "保证金";
}
}
if (value == null) {
@ -1216,10 +1301,13 @@ public class ExportExcelUtils {
totalCell.setCellValue("总计");
} else if (i == 5) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(costProjectManageTotalAmount);
totalCell.setCellValue((costProjectManageTotalAmount == null) ? 0 : costProjectManageTotalAmount);
} else if (i == 7) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(budgetBean.getCostProjectManageTaxExclude()));
} else if (i == 9) {
totalCell.setCellType(CellType.NUMERIC);
totalCell.setCellValue(Utils.format(managePayAmountTotal));
} else {
totalCell.setCellType(CellType.STRING);
totalCell.setCellValue("");

View File

@ -5572,7 +5572,7 @@ CREATE TABLE `project` (
`end_date` datetime NOT NULL COMMENT '项目结束时间,精确到月',
`underwritten_mode` int(11) NOT NULL COMMENT '垫资模式1A类-不垫资战略合作2B类-不垫资背靠背3C类-垫资账期覆盖4D类-垫资(账期不覆盖)',
`customer` varchar(255) NOT NULL COMMENT '客户名称',
`terminal_customer` varchar(255) NOT NULL COMMENT '终端客户名称',
`terminal_customer` varchar(255) NOT NULL COMMENT '最终用户名称',
`advance_interest_amount` decimal(16,2) NOT NULL COMMENT '垫资利息(元为单位)',
`advance_peak_amount` decimal(16,2) NOT NULL COMMENT '垫资峰值',
`contract_amount` decimal(16,2) NOT NULL COMMENT '合同金额',

View File

@ -7579,7 +7579,7 @@ CREATE TABLE `project` (
`end_date` datetime NOT NULL COMMENT '项目结束时间,精确到月',
`underwritten_mode` int(11) NOT NULL COMMENT '垫资模式1A类-不垫资战略合作2B类-不垫资背靠背3C类-垫资账期覆盖4D类-垫资(账期不覆盖)',
`customer` varchar(255) NOT NULL COMMENT '客户名称',
`terminal_customer` varchar(255) NOT NULL COMMENT '终端客户名称',
`terminal_customer` varchar(255) NOT NULL COMMENT '最终用户名称',
`advance_interest_amount` decimal(16,2) NOT NULL COMMENT '垫资利息(元为单位)',
`advance_peak_amount` decimal(16,2) NOT NULL COMMENT '垫资峰值',
`contract_amount` decimal(16,2) NOT NULL COMMENT '合同金额',

View File

@ -346,6 +346,7 @@ function checkIfFillIn() {
var customer = $("#customer").val();
var terminalCustomer = $("#terminalCustomer").val();
var valueRisk = $("#valueRisk").val();
var principal = $("#principal").val();
// var incomeDeviceTaxInclude = $("#incomeDeviceTaxInclude").val();
// var incomeDeviceTaxExclude = $("#incomeDeviceTaxExclude").val();
@ -417,13 +418,13 @@ function checkIfFillIn() {
}
if (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0) {
if (underwrittenMode > 2 && (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0)) {
window.confirm('垫资利息不能为空');
check = 1;
return;
}
if (advancePeakAmount == undefined || advancePeakAmount.length <= 0) {
if (underwrittenMode > 2 && (advancePeakAmount == undefined || advancePeakAmount.length <= 0)) {
window.confirm('垫资峰值不能为空');
check = 1;
return;
@ -490,7 +491,7 @@ function checkIfFillIn() {
}
if (terminalCustomer == undefined || terminalCustomer.length <= 0) {
window.confirm('终端客户名称不能为空');
window.confirm('最终用户名称不能为空');
check = 1;
return;
}
@ -500,6 +501,12 @@ function checkIfFillIn() {
check = 1;
return;
}
if (principal == undefined || principal.length <= 0) {
window.confirm('项目负责人不能为空');
check = 1;
return;
}
}
/**

View File

@ -13,7 +13,14 @@ COST_DETAIL={
"taxRate":[true,"税率","number"],
"totalTaxInclude":[true,"含税总金额","number"],
"totalTaxExclude":[true,"不含税金额","number"],
"totalTax":[true,"税金","number"]
"totalTax":[true,"税金","number"],
"contractParty":[true,"签约方","string"],
"isUnderwritten":[true,"是否垫资","string"],
"underwrittenAmount":[true,"预估垫资金额","number"],
"payTime":[true,"支出时间","string"],
"payAmount":[true,"支出金额","number"],
"payWay":[true,"付款方式","string"],
"remark":[true,"备注","string"]
};
/*
[
@ -148,6 +155,8 @@ $(function () {
bindOtherOtherChangeable();
//绑定采购明细中select联动事件
bindTypeSelectChange();
//绑定删除按钮
bindDeleteBtnCost();
//初始化大类和类别的数据
getAjax(base+"/procurement/type/map", null, initTypeCategory);
@ -197,6 +206,19 @@ function appendTrCost() {
'<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax-include input-changeable-total-tax-include-cost" readonly></td>'+
'<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax-exclude input-changeable-total-tax-exclude-cost" readonly></td>'+
'<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax input-changeable-total-tax-cost" readonly></td>'+
'<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" ></td>\n' +
'<td>\n' +
' <select style="width: 100px;float: left;" class="am-modal-prompt-input am-modal-prompt-input-cost am-modal-prompt-input-cost-underwritten">\n' +
' <option value="0" ></option>\n' +
' <option value="1" >是</option>\n' +
' <option value="2" >否</option>\n' +
' </select>\n' +
'</td>\n' +
'<td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-underwritten-amount-cost" ></td>\n' +
'<td><input style="width: 150px;float: left;" type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" data-am-datepicker></td>\n' +
'<td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-pay-amount-cost" ></td>\n' +
'<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" ></td>\n' +
'<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" ></td>\n' +
'<td><button type="button" style="margin-top: 10px" class="am-btn am-btn-danger am-btn-xs am-round am-modal-line-delete"><span class="am-icon-minus"></span></button></td>'+
'</tr>';
@ -205,6 +227,8 @@ function appendTrCost() {
bindDeleteBtnCost();
//绑定序号
bindNum();
//绑定时间
bindTime();
//重新绑定
bindChangeableInput();
//绑定总计值
@ -215,6 +239,13 @@ function appendTrCost() {
bindNumberInput();
}
/**
* 绑定时间选择器
*/
function bindTime() {
$('[data-am-datepicker]').datepicker();
}
/**
* 绑定每一行的删除事件删除当前的一行tr修改总计值
*/
@ -227,6 +258,8 @@ function bindDeleteBtnCost() {
updateTotal("input-changeable-total-tax-include-cost", "input-changeable-total-total-tax-include-cost");
updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost");
updateTotal("input-changeable-total-tax-cost", "input-changeable-total-total-tax-cost");
updateTotal("input-changeable-total-pay-amount-cost", "input-changeable-total-total-pay-amount-cost");
updateTotal("input-changeable-total-underwritten-amount-cost", "input-changeable-total-total-underwritten-amount-cost");
});
}
@ -252,6 +285,14 @@ function bindCostTotal() {
updateTotal("input-changeable-total-tax-exclude-cost", "input-changeable-total-total-tax-exclude-cost");
updateTotal("input-changeable-total-tax-cost", "input-changeable-total-total-tax-cost");
});
//收款金额变化
$(".input-changeable-total-pay-amount-cost").change(function () {
updateTotal("input-changeable-total-pay-amount-cost", "input-changeable-total-total-pay-amount-cost");
});
//垫资金额变化
$(".input-changeable-total-underwritten-amount-cost").change(function () {
updateTotal("input-changeable-total-underwritten-amount-cost", "input-changeable-total-total-underwritten-amount-cost");
});
}
/**

View File

@ -12,6 +12,8 @@ COST_PROJECT_MANAGE_DETAIL={
"amount":[true,"数量","string"],
"price":[true,"单价","price"],
"total":[true,"总金额","number"],
"payTime":[true,"支出时间","string"],
"payAmount":[true,"支出金额","number"],
"predictMethod":[false,"预估计算方法","string"],
"predictWhy":[false,"预估依据","string"],
"remark":[false,"备注","string"],
@ -91,6 +93,8 @@ $(function () {
bindChangeableInputProjectManage();
initTypeCategoryManage();
bindDeleteBtnCostManage();
});
/**
* 采购成本增加一行
@ -104,6 +108,7 @@ function appendTrCostProjectManage() {
' <option value="1" >人工成本</option>\n' +
' <option value="2" >业务费用</option>\n' +
' <option value="3" >其他费用</option>\n' +
' <option value="4" >保证金</option>\n' +
' </select>\n' +
' </td>\n' +
' <td>\n' +
@ -115,6 +120,7 @@ function appendTrCostProjectManage() {
' <option value="5" >业务费用</option>\n' +
' <option value="6" >商务及专项验收费用</option>\n' +
' <option value="7" >办公费用</option>\n' +
' <option value="9" >保证金</option>\n' +
' </select>\n' +
' <input type="hidden" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage am-modal-prompt-input-cost-project-manage-category2"/>\n' +
' </td>\n' +
@ -123,6 +129,8 @@ function appendTrCostProjectManage() {
' <td><input type="number" min="0" max="99999999" step="1" maxlength="8" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-amount-project-manage"></td>\n' +
' <td><input type="text" min="0.00" max="9999999999.99" step="0.01" maxlength="19" class="price am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-price-project-manage"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-total-project-manage" readonly></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage" data-am-datepicker></td>\n' +
' <td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-pay-amount-project-manage"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage"></td>\n' +
@ -132,6 +140,7 @@ function appendTrCostProjectManage() {
$("#manageTotal").before(template);
//重新绑定删除事件和input修改事件
bindDeleteBtnCostManage();
bindTime();
//绑定序号
bindNum();
bindChangeableInputProjectManage();
@ -142,6 +151,13 @@ function appendTrCostProjectManage() {
bindNumberInput();
}
/**
* 绑定时间选择器
*/
function bindTime() {
$('[data-am-datepicker]').datepicker();
}
/**
* 绑定每一行的删除事件删除当前的一行tr修改总计值
*/
@ -152,6 +168,7 @@ function bindDeleteBtnCostManage() {
bindNum();
updateAmount("input-changeable-amount-project-manage", "input-changeable-total-amount-project-manage");
updateTotal("input-changeable-total-project-manage", "input-changeable-total-total-project-manage");
updateTotal("input-changeable-pay-amount-project-manage", "input-changeable-total-pay-amount-project-manage");
});
}
@ -168,6 +185,10 @@ function bindCostManageTotal() {
$(".input-changeable-price-project-manage").change(function () {
updateTotal("input-changeable-total-project-manage", "input-changeable-total-total-project-manage");
});
//收款金额变化
$(".input-changeable-pay-amount-project-manage").change(function () {
updateTotal("input-changeable-pay-amount-project-manage", "input-changeable-total-pay-amount-project-manage");
});
}
/**
@ -244,6 +265,12 @@ function initTypeCategoryManage() {
id:"8"
});
SELECT_TYPE_CATEGORY_MAP_DATA_MANAGER[2] = temp2;
var temp4 = [];
temp4.push({
name:"保证金",
id:"9"
});
SELECT_TYPE_CATEGORY_MAP_DATA_MANAGER[4] = temp4;
SELECT_CATEGORY_TYPE_MAP_DATA_MANAGER[1] = 1;
SELECT_CATEGORY_TYPE_MAP_DATA_MANAGER[2] = 1;
@ -253,6 +280,7 @@ function initTypeCategoryManage() {
SELECT_CATEGORY_TYPE_MAP_DATA_MANAGER[6] = 2;
SELECT_CATEGORY_TYPE_MAP_DATA_MANAGER[7] = 2;
SELECT_CATEGORY_TYPE_MAP_DATA_MANAGER[8] = 2;
SELECT_CATEGORY_TYPE_MAP_DATA_MANAGER[9] = 4;
}
function bindChangeableInputProjectManage() {
//数量改变

View File

@ -0,0 +1,112 @@
/**
* 一个收入详情的字段
*/
//INCOME_DETAIL_ARR=["type","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"];
INCOME_PLAN_DETAIL={
"num":[false,"序号","string"],
"receivePoint":[true,"收款节点","string"],
"receiveTime":[true,"收款时间","string"],
"receiveAmount":[true,"收款金额","number"]
};
$(function () {
$("#income-plan-detail").click(function () {
$('#my-prompt-income-plan-detail').modal({
relatedTarget: this,
closeOnConfirm:false,
onConfirm: function(e) {
//不能使用e.data因为无法获取动态添加的
var data = collectData("am-modal-prompt-input-income-plan");
//data = prepareAjaxData(data, INCOME_DETAIL_ARR, $("#id").val(),false);
data = prepareAjaxDataVerify(data, INCOME_PLAN_DETAIL, $("#id").val());
if(data.details){
postAjax(base+"/project/budgetEditSaveIncomePlanDetail", data, updateIncomePlanData);
}
},
onCancel: function(e) {
}
});
});
});
//保存收入计划表
$(function () {
$("#incomePlanTableSave").click(function () {
var data = collectData("am-modal-prompt-input-income-plan");
data = prepareAjaxDataVerify(data, INCOME_PLAN_DETAIL, $("#id").val());
if(data.details){
postAjax(base+"/project/budgetEditSaveIncomePlanDetail", data, updateIncomePlanData);
}
});
$("#incomePlanAddBtn").click(function () {
appendTrIncomePlan();
});
$(".am-modal-line-delete").click(function () {
//删除自己对应的tr
$(this).parent().parent().remove();
bindNum();
updateTotal("input-changeable-receive-income-plan", "input-changeable-total-receive-income-plan");
});
});
/**
* 更新页面收入的数据累加
*/
function updateIncomePlanData(data,returnData) {
layuiAlert("保存成功");
$('#my-prompt-income-plan-detail').modal('close');
}
/**
* 收入明细增加一行
*/
function appendTrIncomePlan() {
var template = '<tr>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan input-budget-num" readonly></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan incomePlanTime" autocomplete="off" data-am-datepicker></td>\n' +
' <td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-income-plan input-changeable-receive input-changeable-receive-income-plan"></td>\n' +
' <td><button type="button" style="margin-top: 10px" class="am-btn am-btn-danger am-btn-xs am-round am-modal-line-delete"><span class="am-icon-minus"></span></button></td>\n' +
' </tr>';
$("#incomePlanTotal").before(template);
//重新绑定删除事件和input修改事件
bindDeleteBtnIncomePlan();
bindTime();
bindNum();
bindIncomePlanTotal();
//绑定数字输入框保留两位小数
bindNumberInput();
}
/**
* 绑定每一行的删除事件删除当前的一行tr修改总计值
*/
function bindDeleteBtnIncomePlan() {
$(".am-modal-line-delete").click(function () {
//删除自己对应的tr
$(this).parent().parent().remove();
bindNum();
updateTotal("input-changeable-receive-income-plan", "input-changeable-total-receive-income-plan");
});
}
/**
* 绑定每个可改变的输入框修改后改变对应输入框的值
*/
function bindIncomePlanTotal() {
//收款金额变化
$(".input-changeable-receive-income-plan").change(function () {
updateTotal("input-changeable-receive-income-plan", "input-changeable-total-receive-income-plan");
});
}
/**
* 绑定时间选择器
*/
function bindTime() {
$('[data-am-datepicker]').datepicker();
}

View File

@ -102,7 +102,7 @@
<div class="admin-content">
<div class="admin-content-body">
<div class="am-cf am-padding">
<div style="word-wrap:break-word; word-break:break-all; " class="am-fl am-cf"><strong class="am-text-primary am-text-lg">月度结算表明细</strong> /
<div style="word-wrap:break-word; word-break:break-all; " class="am-fl am-cf"><strong class="am-text-primary am-text-lg">PMO项目执行进度管理明细</strong> /
<small>${monthlySettle.projectName!}</small></div>
</div>

View File

@ -6,7 +6,7 @@
<div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;">
<!-- padding:1px 2px 3px 4px;上、右、下,和左 -->
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">项目管理</strong> /
<small>月度结算</small>
<small>PMO项目执行进度管理</small>
</div>
</div>
<div class="am-g">

View File

@ -115,9 +115,9 @@
<!--选项卡tabsbegin-->
<div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li id="jiben" <#if check==1>class="am-active"</#if>><a href="#tab1">项目基本信息</a></li>
<li id="jiben" <#if check==1>class="am-active"</#if>><a href="#tab1">项目立项(概算)基本信息</a></li>
<#if project.status==1 || project.status==5 || project.status==10 || project.status==15>
<li><a href="#tab2">项目立项(概算)信息</a></li>
<li><a href="#tab2">项目立项(概算)其他信息</a></li>
</#if>
<#if project.status==5 || project.status==10 || project.status==15>
<li><a href="#tab3">项目预算信息</a></li>
@ -243,14 +243,14 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-g am-form-group am-margin-top" id="noUnder" <#if project.underwrittenMode! <= 2>hidden</#if>>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><input readonly style="text-align: right;width: 80px ;margin-bottom: 12px;" value="垫资利息"/></div>
<div class="am-u-sm-6 am-u-md-6">
<input readonly value="${Utils.format(project.advanceInterestAmount)}元" />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-g am-form-group am-margin-top" id="noUnder" <#if project.underwrittenMode! <= 2>hidden</#if>>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><input readonly style="text-align: right;width: 80px ;margin-bottom: 12px;" value="垫资峰值"/></div>
<div class="am-u-sm-6 am-u-md-6">
<input readonly value="${Utils.format(project.advancePeakAmount)}元" />
@ -320,11 +320,11 @@
<span>
<#if project.certainty??>
<#if (project.certainty) =1>
<input readonly value="A基本确定中标,待签合同,合同签订中"/>
<input readonly value="A项目成功率80%-100%"/>
<#elseif (project.certainty) =2>
<input readonly value="B客户产品参数、商务评分、商务资质引导成功"/>
<input readonly value="B项目成功率60%-80%"/>
<#elseif (project.certainty) =3>
<input readonly value="C项目初期引导阶段"/>
<input readonly value="C项目成功率40%-60%"/>
</#if>
<#else>
<input readonly value=""/>
@ -374,7 +374,7 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right"><input readonly style="text-align: right;width: 120px ;margin-bottom: 6px;" value="终端客户名称"/></div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><input readonly style="text-align: right;width: 120px ;margin-bottom: 6px;" value="最终用户名称"/></div>
<div class="am-u-sm-6 am-u-md-6">
<#--<textarea style="overflow:auto; background-attachment: fixed;
background-repeat: no-repeat; border-style: solid;border-color: #FFFFFF">${project.terminalCustomer}</textarea>-->
@ -445,7 +445,7 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right"><input readonly style="text-align: right;width: 80px ;margin-bottom: 12px;" value="签单方式"/></div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><input readonly style="text-align: right;width: 80px ;margin-bottom: 12px;" value="签"/></div>
<div class="am-u-sm-6 am-u-md-6">
<span>
<#if project.signType??>
@ -653,6 +653,7 @@
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab35">预算信息</a></li>
<li><a href="#tab31">收入明细表</a></li>
<li><a href="#tab35">收入计划表</a></li>
<li><a href="#tab32">采购成本明细表</a></li>
<li><a href="#tab33">项目管理成本表</a></li>
<li><a href="#tab34">资金计划表</a></li>
@ -752,6 +753,39 @@
</tbody>
</table>
</div>
<div class="am-tab-panel am-fade am-in am-scrollable-horizontal" id="tab35">
<#--<span class="am-text-lg">收入明细表</span>-->
<table class="am-table am-table-bordered am-table-radius table-main am-text-nowrap"
style="padding:0;"
id="incomePlanTable">
<tbody>
<tr>
<td width="60px">序号</td>
<td>收款节点</td>
<td>收款时间</td>
<td>收款金额(元)</td>
</tr>
<#if incomePlanDetails??>
<#list incomePlanDetails as incomePlanDetail>
<tr>
<td>${(incomePlanDetail_index+1)!}</td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan" value="${incomePlanDetail.receivePoint!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan incomePlanTime" value="${(incomePlanDetail.receiveTime?string("yyyy-MM-dd"))!}" autocomplete="off" data-am-datepicker></td>
<td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-income-plan input-changeable-receive input-changeable-receive-income-plan" value="${Utils.format(incomePlanDetail.receiveAmount,'0')}"></td>
</tr>
</#list>
</#if>
<tr class="total-new" id="incomePlanTotal">
<td>总计</td>
<td></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan input-changeable-total-receive-income-plan" value="${Utils.format(incomePlanTotal,'0.00')}" readonly></td>
<td></td>
</tr>
</tbody>
</table>
</div>
<div class="am-tab-panel am-fade am-in" id="tab32">
<#--<span class="am-text-lg">采购成本明细表</span>-->
<table class="am-table am-table-bordered am-table-radius table-main"
@ -770,7 +804,13 @@
<td>含税总金额(元)</td>
<td>不含税金额(元)</td>
<td>税金(元)</td>
<#--<td>操作</td>-->
<td>签约方</td>
<td>是否垫资</td>
<td>预估垫资金额(元)</td>
<td>支出时间</td>
<td>支出金额(元)</td>
<td>付款方式</td>
<td>备注</td>
</tr>
<#if costDetails??>
@ -834,6 +874,32 @@
value="${Utils.format(costDetail.totalTax,'0.00')}"
readonly>
</td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${costDetail.contractParty!}"></td>
<td width="60px">
<#--<select style="width: auto" readonly
class="am-modal-prompt-input am-modal-prompt-input-cost am-modal-prompt-input-cost-type">
<option value="1" <#if costDetail.type == 1>selected</#if>>设备
</option>
<option value="2" <#if costDetail.type == 2>selected</#if>>施工
</option>
<option value="3" <#if costDetail.type == 3>selected</#if>>服务
</option>
<option value="4" <#if costDetail.type == 4>selected</#if>>其他
</option>
</select>-->
<#if costDetail.isUnderwritten ==0 >
<#elseif costDetail.isUnderwritten ==1>
<#elseif costDetail.isUnderwritten ==2>
</#if>
</td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-underwritten-amount-cost" value="${Utils.format(costDetail.underwrittenAmount,'0')}"></td>
<td><input style="width: 150px;float: left;" type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${(costDetail.payTime?string("yyyy-MM-dd"))!}" data-am-datepicker></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-pay-amount-cost" value="${Utils.format(costDetail.payAmount,'0')}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${costDetail.payWay!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${costDetail.remark!}"></td>
<#--<td>
<button type="button"
class="am-btn am-btn-warning am-btn-xs am-round am-modal-line-delete">
@ -854,8 +920,13 @@
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-tax-include-cost" value="${Utils.format(budgetBean.costPurchaseTotalTaxInclude,'0.00')}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-tax-exclude-cost" value="${Utils.format(budgetBean.costPurchaseTotalTaxExclude,'0.00')}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-tax-cost" value="${Utils.format(budgetBean.costPurchaseTotalTax,'0.00')}" readonly></td>
<#--<td></td>-->
</tr>
<td></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-underwritten-amount-cost" value="${Utils.format(costUnderwrittenAmountTotal,'0.00')}" readonly></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-pay-amount-cost" value="${Utils.format(costPayAmountTotal,'0.00')}" readonly></td>
<td></td>
<td></td> </tr>
</tbody>
</table>
</div>
@ -874,6 +945,8 @@
<td>数量</td>
<td>单价</td>
<td>总金额(元)</td>
<td>支出时间</td>
<td>支出金额(元)</td>
<td>预估计算方法</td>
<td>预估依据</td>
<td>备注</td>
@ -928,6 +1001,8 @@
class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-total-project-manage"
value="${Utils.format(costProjectManageDetail.total,'0.00')}"
readonly></td>
<td width="120px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage" value="${(costProjectManageDetail.payTime?string("yyyy-MM-dd"))!}" data-am-datepicker></td>
<td width="120px"><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-pay-amount-project-manage" value="${Utils.format(costProjectManageDetail.payAmount,'0.00')}"></td>
<td width="120px"><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage"
value="${costProjectManageDetail.predictMethod!}"></td>
@ -958,6 +1033,8 @@
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-total-total-project-manage" value="${Utils.format(budgetBean.costProjectManageTaxInclude,'0.00')}" readonly></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-total-pay-amount-project-manage" value="${Utils.format(managePayAmountTotal,'0.00')}" readonly></td>
<td></td>
<td></td>
<td></td>
<#--<td></td>-->

View File

@ -43,9 +43,10 @@
<!--选项卡tabsbegin-->
<div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab1">项目基本信息</a></li>
<li><a href="#tab2">项目其他信息</a></li>
<li class="am-active"><a href="#tab1">项目立项(概算)基本信息</a></li>
<li><a href="#tab2">项目立项(概算)其他信息</a></li>
<li><a href="#tab3">收入明细表</a></li>
<li><a href="#tab8">收入计划表</a></li>
<li><a href="#tab4">采购成本明细表</a></li>
<li><a href="#tab5">项目管理成本表</a></li>
<li><a href="#tab6">资金计划表</a></li>
@ -257,13 +258,13 @@
<div class="am-u-sm-6 am-u-md-6">
<select data-am-selected id="certainty" name="certainty">
<#if project.certainty??>
<option value="1" <#if project.certainty=1>selected</#if>>A基本确定中标,待签合同,合同签订中</option>
<option value="2" <#if project.certainty=2>selected</#if>>B客户产品参数、商务评分、商务资质引导成功</option>
<option value="3" <#if project.certainty=3>selected</#if>>C项目初期引导阶段</option>
<option value="1" <#if project.certainty=1>selected</#if>>A项目成功率80%-100%</option>
<option value="2" <#if project.certainty=2>selected</#if>>B项目成功率60%-80%</option>
<option value="3" <#if project.certainty=3>selected</#if>>C项目成功率40%-60%</option>
<#else>
<option value="1" >A基本确定中标,待签合同,合同签订中</option>
<option value="2" >B客户产品参数、商务评分、商务资质引导成功</option>
<option value="3" >C项目初期引导阶段</option>
<option value="1" >A项目成功率40%-60%</option>
<option value="2" >B项目成功率40%-60%</option>
<option value="3" >C项目成功率40%-60%</option>
</#if>
</select>
</div>
@ -309,10 +310,10 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>终端客户名称</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>最终用户名称</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" class="am-input" data-validate-async data-validation-message="请输入终端客户名称1000字符以内"
name="terminalCustomer" placeholder="请输入终端客户名称1000字符以内" maxlength="1000" id="terminalCustomer"
<input type="text" class="am-input" data-validate-async data-validation-message="请输入最终用户名称1000字符以内"
name="terminalCustomer" placeholder="请输入最终用户名称1000字符以内" maxlength="1000" id="terminalCustomer"
value="${project.terminalCustomer!}" required/>
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
@ -338,7 +339,7 @@
<div class="am-tab-panel am-fade am-in" id="tab2">
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right">项目负责人</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>项目负责人</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" id="principal" class="am-input" data-validate-async data-validation-message="请输入项目负责人"
name="principal" placeholder="请输入项目负责人" maxlength="20"
@ -393,7 +394,7 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right">签单方式</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right">签</div>
<div class="am-u-sm-6 am-u-md-6">
<select data-am-selected id="signType" name="signType">
<#if project.signType??>
@ -656,6 +657,49 @@
</div>
</div>
<div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in" id="tab8">
<div class="am-modal-bd">
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;" id="incomePlanTable">
<tbody>
<tr>
<td>序号</td>
<td>收款节点</td>
<td>收款时间</td>
<td>收款金额(元)</td>
<td>操作</td>
</tr>
<#if incomePlanDetails??>
<#list incomePlanDetails as incomePlanDetail>
<tr>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan input-budget-num" value="${(incomePlanDetail_index+1)!}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan" value="${incomePlanDetail.receivePoint!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan incomePlanTime" value="${(incomePlanDetail.receiveTime?string("yyyy-MM-dd"))!}" autocomplete="off" data-am-datepicker></td>
<td><input type="text" class="number am-modal-prompt-input am-modal-prompt-input-income-plan input-changeable-receive input-changeable-receive-income-plan" value="${Utils.format(incomePlanDetail.receiveAmount,'0')}"></td>
<td><button type="button" style="margin-top: 10px" class="am-btn am-btn-danger am-btn-xs am-round am-modal-line-delete"><span class="am-icon-minus"></span></button></td>
</tr>
</#list>
</#if>
<tr class="total-new" id="incomePlanTotal">
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan" value="总计" readonly></td>
<td></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income-plan input-changeable-total-receive-income-plan" value="${Utils.format(incomePlanTotal,'0.00')}" readonly></td>
<td></td>
</tr>
</tbody>
</table>
<button type="button" id="incomePlanAddBtn" class="am-btn am-btn-primary am-btn-xs am-round"><span class="am-icon-plus"></span></button>
</div>
<div class="am-modal-footer">
<#--<span class="am-modal-btn" data-am-modal-cancel>取消</span>-->
<span class="am-modal-btn" data-am-modal-confirm id="incomePlanTableSave">保存</span>
</div>
</div>
</div>
<div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in" id="tab4">
<div class="am-modal-bd">
@ -673,6 +717,13 @@
<td>含税总金额(元)</td>
<td>不含税金额(元)</td>
<td>税金(元)</td>
<td>签约方</td>
<td>是否垫资</td>
<td>预估垫资金额(元)</td>
<td>支出时间</td>
<td>支出金额(元)</td>
<td>付款方式</td>
<td>备注</td>
<td>操作</td>
</tr>
@ -711,6 +762,19 @@
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax-include input-changeable-total-tax-include-cost" value="${Utils.format(costDetail.totalTaxInclude,'0')}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax-exclude input-changeable-total-tax-exclude-cost" value="${Utils.format(costDetail.totalTaxExclude,'0')}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-tax input-changeable-total-tax-cost" value="${Utils.format(costDetail.totalTax,'0')}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${costDetail.contractParty!}"></td>
<td>
<select style="width: 100px;float: left;" class="am-modal-prompt-input am-modal-prompt-input-cost am-modal-prompt-input-cost-underwritten">
<option value="0" <#if costDetail.isUnderwritten == 0>selected</#if>></option>
<option value="1" <#if costDetail.isUnderwritten == 1>selected</#if>>是</option>
<option value="2" <#if costDetail.isUnderwritten == 2>selected</#if>>否</option>
</select>
</td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-underwritten-amount-cost" value="${Utils.format(costDetail.underwrittenAmount,'0')}"></td>
<td><input style="width: 150px;float: left;" type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${(costDetail.payTime?string("yyyy-MM-dd"))!}" data-am-datepicker></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-pay-amount-cost" value="${Utils.format(costDetail.payAmount,'0')}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${costDetail.payWay!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost" value="${costDetail.remark!}"></td>
<td><button type="button" style="margin-top: 10px" class="am-btn am-btn-danger am-btn-xs am-round am-modal-line-delete"><span class="am-icon-minus"></span></button></td>
</tr>
</#list>
@ -728,6 +792,13 @@
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-tax-exclude-cost" value="${Utils.format(budgetBean.costPurchaseTotalTaxExclude,'0')}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-tax-cost" value="${Utils.format(budgetBean.costPurchaseTotalTax,'0')}" readonly></td>
<td></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-underwritten-amount-cost" value="${Utils.format(costUnderwrittenAmountTotal,'0.00')}" readonly></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost input-changeable-total-total-pay-amount-cost" value="${Utils.format(costPayAmountTotal,'0.00')}" readonly></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
@ -755,6 +826,8 @@
<td>数量</td>
<td>单价</td>
<td>总金额(元)</td>
<td>支出时间</td>
<td>支出金额(元)</td>
<td>预估计算方法</td>
<td>预估依据</td>
<td>备注</td>
@ -769,6 +842,7 @@
<option value="1" <#if costProjectManageDetail.type == 1>selected</#if>>人工成本</option>
<option value="2" <#if costProjectManageDetail.type == 2>selected</#if>>业务费用</option>
<option value="3" <#if costProjectManageDetail.type == 3>selected</#if>>其他费用</option>
<option value="4" <#if costProjectManageDetail.type == 4>selected</#if>>保证金</option>
</select>
</td>
<td>
@ -785,6 +859,9 @@
<option value="7" <#if costProjectManageDetail.name == "办公费用">selected</#if>>办公费用</option>
<option value="8" <#if costProjectManageDetail.name == "自定义">selected</#if>>自定义</option>
</#if>
<#if costProjectManageDetail.type == 4>
<option value="9" <#if costProjectManageDetail.name == "保证金">selected</#if>>保证金</option>
</#if>
</select>
<input <#if costProjectManageDetail.isDiy == 1>type="text"<#else>type="hidden"</#if> class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage am-modal-prompt-input-cost-project-manage-category2" value="${costProjectManageDetail.name!}">
</td>
@ -793,6 +870,8 @@
<td><input type="number" min="0" max="99999999" step="1" maxlength="8" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-amount-project-manage" value="${costProjectManageDetail.amount!0}" <#--onkeyup="integerNumber(this)"--> oninput="if(value.length>8)value=value.slice(0,8)"></td>
<td><input type="text" maxlength="19" class="price am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-price-project-manage" value="${Utils.format2(costProjectManageDetail.price,'0')}" oninput="if(value.length>19)value=value.slice(0,19)"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-total-project-manage" value="${Utils.format(costProjectManageDetail.total,'0')}" readonly></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage" value="${(costProjectManageDetail.payTime?string("yyyy-MM-dd"))!}" data-am-datepicker></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-pay-amount-project-manage" value="${Utils.format(costProjectManageDetail.payAmount,'0.00')}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage" value="${costProjectManageDetail.predictMethod!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage" value="${costProjectManageDetail.predictWhy!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage" value="${costProjectManageDetail.remark!}"></td>
@ -812,6 +891,8 @@
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-total-total-project-manage" value="${Utils.format(budgetBean.costProjectManageTaxInclude,'0')}" readonly></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-cost-project-manage input-changeable-total-pay-amount-project-manage" value="${Utils.format(managePayAmountTotal,'0.00')}" readonly></td>
<td></td>
<td></td>
<td></td>
<td></td>
@ -1221,6 +1302,7 @@
<script src="${base}/assets/js/project_common.js"></script>
<script src="${base}/assets/js/project_budget.js"></script>
<script src="${base}/assets/js/project_budget_income.js"></script>
<script src="${base}/assets/js/project_budget_income_plan.js"></script>
<script src="${base}/assets/js/project_budget_cost.js"></script>
<script src="${base}/assets/js/project_budget_cost_project_manage.js"></script>
<script src="${base}/assets/js/project_budget_plan.js"></script>
@ -1234,8 +1316,12 @@
var underwrittenMode = $("#underwrittenMode").val();
if (underwrittenMode == 1) {
$("#coop").show();
} else {
$("#noUnder").hide();
} else if (underwrittenMode == 2) {
$("#coop").hide();
$("#noUnder").hide();
} else {
$("#noUnder").show();
}
};

View File

@ -11,8 +11,8 @@
<!--选项卡tabsbegin-->
<div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab1">项目基本信息</a></li>
<li><a href="#tab2">项目其他信息</a></li>
<li class="am-active"><a href="#tab1">项目立项(概算)基本信息</a></li>
<li><a href="#tab2">项目立项(概算)其他信息</a></li>
</ul>
<div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
@ -122,7 +122,7 @@
</div>
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-g am-form-group am-margin-top" id="noUnder" hidden>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资利息</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" class="number am-input" data-validate-async data-validation-message="请输入垫资利息"
@ -131,7 +131,7 @@
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-g am-form-group am-margin-top" id="noUnder" hidden>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资峰值</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" class="number am-input" data-validate-async data-validation-message="请输入垫资峰值"
@ -211,9 +211,9 @@
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>项目把握度</div>
<div class="am-u-sm-6 am-u-md-6">
<select data-am-selected id="certainty" name="certainty">
<option value="1" >A基本确定中标,待签合同,合同签订中</option>
<option value="2" >B客户产品参数、商务评分、商务资质引导成功</option>
<option value="3" >C项目初期引导阶段</option>
<option value="1" >A项目成功率80%-100%</option>
<option value="2" >B项目成功率60%-80%</option>
<option value="3" >C项目成功率40%-60%</option>
</select>
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
@ -252,10 +252,10 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>终端客户名称</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>最终用户名称</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" class="am-input" data-validate-async data-validation-message="请输入终端客户名称1000字符以内"
name="terminalCustomer" id="terminalCustomer" placeholder="请输入终端客户名称1000字符以内" maxlength="1000"
<input type="text" class="am-input" data-validate-async data-validation-message="请输入最终用户名称1000字符以内"
name="terminalCustomer" id="terminalCustomer" placeholder="请输入最终用户名称1000字符以内" maxlength="1000"
value="" required />
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
@ -279,7 +279,7 @@
<div class="am-tab-panel am-fade am-in" id="tab2">
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right">项目负责人</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>项目负责人</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" id="principal" class="am-input" data-validate-async data-validation-message="请输入项目负责人"
name="principal" placeholder="请输入项目负责人" maxlength="20"
@ -328,11 +328,12 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right">签单方式</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right">签</div>
<div class="am-u-sm-6 am-u-md-6">
<select data-am-selected id="signType" name="signType">
<option value="-1" ></option>
<option value="1" >紫光汇智直接投标</option>
<option value="1" >是</option>
<option value="2" >否</option>
</select>
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
@ -641,8 +642,12 @@
var underwrittenMode = $("#underwrittenMode").val();
if (underwrittenMode == 1) {
$("#coop").show();
} else {
$("#noUnder").hide();
} else if (underwrittenMode == 2) {
$("#coop").hide();
$("#noUnder").hide();
} else {
$("#noUnder").show();
}
};
@ -705,7 +710,9 @@
var terminalCustomer = $("#terminalCustomer").val();
var valueRisk = $("#valueRisk").val();
// var principal = $("#principal").val();
var principal = $("#principal").val();
// var contractTime = $("#contractTime").val();
// var bidsTime = $("#bidsTime").val();
// var mainContractResolvePlan = $("#mainContractResolvePlan").val();
@ -781,13 +788,13 @@
}
if (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0) {
if (underwrittenMode > 2 && (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0)) {
window.confirm('垫资利息不能为空');
check = 1;
return;
}
if (advancePeakAmount == undefined || advancePeakAmount.length <= 0) {
if (underwrittenMode > 2 && (advancePeakAmount == undefined || advancePeakAmount.length <= 0)) {
window.confirm('垫资峰值不能为空');
check = 1;
return;
@ -854,7 +861,7 @@
}
if (terminalCustomer == undefined || terminalCustomer.length <= 0) {
window.confirm('终端客户名称不能为空');
window.confirm('最终用户名称不能为空');
check = 1;
return;
}
@ -865,11 +872,11 @@
return;
}
// if (principal == undefined || principal.length <= 0) {
// window.confirm('项目负责人不能为空');
// check = 1;
// return;
// }
if (principal == undefined || principal.length <= 0) {
window.confirm('项目负责人不能为空');
check = 1;
return;
}
//
// if (contractTime.length <= 0) {
// window.confirm('预计合同签订时间不能为空');

View File

@ -19,8 +19,8 @@
<!--选项卡tabsbegin-->
<div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab1">项目基本信息</a></li>
<li><a href="#tab2">项目详细信息</a></li>
<li class="am-active"><a href="#tab1">项目立项(概算)基本信息</a></li>
<li><a href="#tab2">项目立项(概算)其他信息</a></li>
</ul>
<div class="am-tabs-bd">
<div class="am-tab-panel am-fade am-in am-active" id="tab1">
@ -132,7 +132,7 @@
</div>
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-g am-form-group am-margin-top" id="noUnder" <#if project.underwrittenMode! <= 2>hidden</#if>>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资利息</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" class="am-input number" data-validate-async data-validation-message="请输入垫资利息"
@ -141,7 +141,7 @@
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-g am-form-group am-margin-top" id="noUnder" <#if project.underwrittenMode! <= 2>hidden</#if>>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>垫资峰值</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" class="am-input number" data-validate-async data-validation-message="请输入垫资峰值"
@ -227,13 +227,13 @@
<div class="am-u-sm-6 am-u-md-6">
<select data-am-selected id="certainty" name="certainty">
<#if project.certainty??>
<option value="1" <#if project.certainty=1>selected</#if>>A基本确定中标,待签合同,合同签订中</option>
<option value="2" <#if project.certainty=2>selected</#if>>B客户产品参数、商务评分、商务资质引导成功</option>
<option value="3" <#if project.certainty=3>selected</#if>>C项目初期引导阶段</option>
<option value="1" <#if project.certainty=1>selected</#if>>A项目成功率80%-100%</option>
<option value="2" <#if project.certainty=2>selected</#if>>B项目成功率60%-80%</option>
<option value="3" <#if project.certainty=3>selected</#if>>C项目成功率40%-60%</option>
<#else>
<option value="1" >A基本确定中标,待签合同,合同签订中</option>
<option value="2" >B客户产品参数、商务评分、商务资质引导成功</option>
<option value="3" >C项目初期引导阶段</option>
<option value="1" >A项目成功率40%-60%</option>
<option value="2" >B项目成功率40%-60%</option>
<option value="3" >C项目成功率40%-60%</option>
</#if>
</select>
</div>
@ -279,10 +279,10 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>终端客户名称</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>最终用户名称</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" class="am-input" data-validate-async data-validation-message="请输入终端客户名称1000字符以内"
name="terminalCustomer" placeholder="请输入终端客户名称1000字符以内" maxlength="1000" id="terminalCustomer"
<input type="text" class="am-input" data-validate-async data-validation-message="请输入最终用户名称1000字符以内"
name="terminalCustomer" placeholder="请输入最终用户名称1000字符以内" maxlength="1000" id="terminalCustomer"
value="${project.terminalCustomer!}" required/>
</div>
<div class="am-u-sm-2 am-u-md-4 input-msg"></div>
@ -308,7 +308,7 @@
<div class="am-tab-panel am-fade am-in" id="tab2">
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right">项目负责人</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right"><span style="color: red;">*</span>项目负责人</div>
<div class="am-u-sm-6 am-u-md-6">
<input type="text" id="principal" class="am-input" data-validate-async data-validation-message="请输入项目负责人"
name="principal" placeholder="请输入项目负责人" maxlength="20"
@ -363,7 +363,7 @@
</div>
<div class="am-g am-form-group am-margin-top">
<div class="am-u-sm-4 am-u-md-2 am-text-right">签单方式</div>
<div class="am-u-sm-4 am-u-md-2 am-text-right">签</div>
<div class="am-u-sm-6 am-u-md-6">
<select data-am-selected id="signType" name="signType">
<#if project.signType??>
@ -681,8 +681,12 @@
var underwrittenMode = $("#underwrittenMode").val();
if (underwrittenMode == 1) {
$("#coop").show();
} else {
$("#noUnder").hide();
} else if (underwrittenMode == 2) {
$("#coop").hide();
$("#noUnder").hide();
} else {
$("#noUnder").show();
}
};
@ -743,6 +747,8 @@
var terminalCustomer = $("#terminalCustomer").val();
var valueRisk = $("#valueRisk").val();
var principal = $("#principal").val();
// var incomeDeviceTaxInclude = $("#incomeDeviceTaxInclude").val();
// var incomeDeviceTaxExclude = $("#incomeDeviceTaxExclude").val();
// var incomeEngineerTaxInclude = $("#incomeEngineerTaxInclude").val();
@ -813,13 +819,13 @@
}
if (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0) {
if (underwrittenMode > 2 && (advanceInterestAmount == undefined || advanceInterestAmount.length <= 0)) {
window.confirm('垫资利息不能为空');
check = 1;
return;
}
if (advancePeakAmount == undefined || advancePeakAmount.length <= 0) {
if (underwrittenMode > 2 && (advancePeakAmount == undefined || advancePeakAmount.length <= 0)) {
window.confirm('垫资峰值不能为空');
check = 1;
return;
@ -886,7 +892,7 @@
}
if (terminalCustomer == undefined || terminalCustomer.length <= 0) {
window.confirm('终端客户名称不能为空');
window.confirm('最终用户名称不能为空');
check = 1;
return;
}
@ -897,6 +903,12 @@
return;
}
if (principal == undefined || principal.length <= 0) {
window.confirm('项目负责人不能为空');
check = 1;
return;
}
/*if (incomeDeviceTaxInclude == '' || incomeDeviceTaxExclude == '' || incomeEngineerTaxInclude == '' || incomeEngineerTaxExclude == '' ||
incomeServiceTaxInclude == '' || incomeServiceTaxExclude == '' || costPurchaseDeviceTaxInclude == '' || costPurchaseDeviceTaxExclude == '' ||
costPurchaseBuildTaxInclude == '' || costPurchaseBuildTaxExclude == '' || costPurchaseServiceTaxInclude == '' || costPurchaseServiceTaxExclude == '' ||

View File

@ -80,7 +80,6 @@
<option value="-1">全部</option>
<option value="1" <#if type?? && type='1'>selected</#if>>工程集成类</option>
<option value="2" <#if type?? && type='2'>selected</#if>>设备集成类</option>
<option value="3" <#if type?? && type='3'>selected</#if>>战略合作类</option>
</select>
</div>
</td>
@ -101,9 +100,9 @@
<div class="am-u-sm-10">
<select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="certainty" name="certainty">
<option value="-1">全部</option>
<option value="1" <#if certainty?? && certainty='1'>selected</#if>>A基本确定中标,待签合同,合同签订中</option>
<option value="2" <#if certainty?? && certainty='2'>selected</#if>>B客户产品参数、商务评分、商务资质引导成功</option>
<option value="3" <#if certainty?? && certainty='3'>selected</#if>>C项目初期引导阶段</option>
<option value="1" <#if certainty?? && certainty='1'>selected</#if>>A项目成功率80%-100%</option>
<option value="2" <#if certainty?? && certainty='2'>selected</#if>>B项目成功率60%-80%</option>
<option value="3" <#if certainty?? && certainty='3'>selected</#if>>C项目成功率40%-60%</option>
</select>
</div>
</td>
@ -117,7 +116,7 @@
value="${customer!}"/>
</div>
</td>
<th class="am-text-middle" style="width: 10%">终端客户名称</th>
<th class="am-text-middle" style="width: 10%">最终用户名称</th>
<td style="width: 15%">
<div class="am-u-sm-10">
<input type="text" id="terminalCustomer" class="am-form-field am-input-sm"
@ -156,7 +155,7 @@
</select>
</div>
</td>
<th class="am-text-middle" style="width: 10%">签单方式</th>
<th class="am-text-middle" style="width: 10%">签</th>
<td style="width: 15%">
<div class="am-u-sm-10">
<select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500}" id="signType" name="signType">
@ -313,11 +312,11 @@
<th class="table-title">行业场景应用</th>
<th class="table-title">解决方案</th>
<th class="table-title">客户名称</th>
<th class="table-title">终端客户名称</th>
<th class="table-title">最终用户名称</th>
<th class="table-title">预计合同签订时间</th>
<th class="table-title">项目计划招标时间</th>
<th class="table-title">是否二次合作</th>
<th class="table-title">签单方式</th>
<th class="table-title">签</th>
<th class="table-title">战略合作对象</th>
<th class="table-title">项目负责人</th>
<th class="table-title">审核状态</th>

View File

@ -79,7 +79,6 @@
<option value="-1">全部</option>
<option value="1" <#if type?? && type='1'>selected</#if>>工程集成类</option>
<option value="2" <#if type?? && type='2'>selected</#if>>设备集成类</option>
<option value="3" <#if type?? && type='3'>selected</#if>>战略合作类</option>
</select>
</div>
</td>
@ -100,9 +99,9 @@
<div class="am-u-sm-10">
<select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="certainty" name="certainty">
<option value="-1">全部</option>
<option value="1" <#if certainty?? && certainty='1'>selected</#if>>A基本确定中标,待签合同,合同签订中</option>
<option value="2" <#if certainty?? && certainty='2'>selected</#if>>B客户产品参数、商务评分、商务资质引导成功</option>
<option value="3" <#if certainty?? && certainty='3'>selected</#if>>C项目初期引导阶段</option>
<option value="1" <#if certainty?? && certainty='1'>selected</#if>>A项目成功率80%-100%</option>
<option value="2" <#if certainty?? && certainty='2'>selected</#if>>B项目成功率60%-80%</option>
<option value="3" <#if certainty?? && certainty='3'>selected</#if>>C项目成功率40%-60%</option>
</select>
</div>
</td>
@ -116,7 +115,7 @@
value="${customer!}"/>
</div>
</td>
<th class="am-text-middle" style="width: 10%">终端客户名称</th>
<th class="am-text-middle" style="width: 10%">最终用户名称</th>
<td style="width: 15%">
<div class="am-u-sm-10">
<input type="text" id="terminalCustomer" class="am-form-field am-input-sm"
@ -155,7 +154,7 @@
</select>
</div>
</td>
<th class="am-text-middle" style="width: 10%">签单方式</th>
<th class="am-text-middle" style="width: 10%">签</th>
<td style="width: 15%">
<div class="am-u-sm-10">
<select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500}" id="signType" name="signType">
@ -306,11 +305,11 @@
<th class="table-title">行业场景应用</th>
<th class="table-title">解决方案</th>
<th class="table-title">客户名称</th>
<th class="table-title">终端客户名称</th>
<th class="table-title">最终用户名称</th>
<th class="table-title">预计合同签订时间</th>
<th class="table-title">项目计划招标时间</th>
<th class="table-title">是否二次合作</th>
<th class="table-title">签单方式</th>
<th class="table-title">签</th>
<th class="table-title">战略合作对象</th>
<th class="table-title">项目负责人</th>
<th class="table-title">审核状态</th>