零碎需求
parent
2cc70466a2
commit
d0ec8f382a
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -114,7 +114,7 @@ public class Project {
|
|||
@Column(name = "customer")
|
||||
private String customer;
|
||||
/**
|
||||
* 终端客户名称
|
||||
* 最终用户名称
|
||||
*/
|
||||
@Column(name = "terminal_customer")
|
||||
private String terminalCustomer;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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{
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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("");
|
||||
|
|
|
@ -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 '合同金额',
|
||||
|
|
|
@ -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 '合同金额',
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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");
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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() {
|
||||
//数量改变
|
||||
|
|
|
@ -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();
|
||||
}
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -115,9 +115,9 @@
|
|||
<!--选项卡(tabs)begin-->
|
||||
<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>-->
|
||||
|
|
|
@ -43,9 +43,10 @@
|
|||
<!--选项卡(tabs)begin-->
|
||||
<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();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
<!--选项卡(tabs)begin-->
|
||||
<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('预计合同签订时间不能为空');
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
<!--选项卡(tabs)begin-->
|
||||
<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 == '' ||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Reference in New Issue