Merge branch 'master' of gitee.com:ZhangYunTianXia/fourcal

master
suhang_max@163.com 2022-12-08 11:55:10 +08:00
commit dc011016fe
24 changed files with 1353 additions and 61 deletions

View File

@ -168,7 +168,7 @@ public class ProjectController extends BaseController {
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", "principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection"};
exportExcelUtils.exportProjectExcel(headers0, columns0, project, "yyyy-MM-dd", 0, "项目立项(概算)基本信息", outputStream);
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);
@ -194,9 +194,9 @@ public class ProjectController extends BaseController {
} else {
incomeTaxRates = incomeTaxSb.toString();
}
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);
String[] headers2 = {"序号", "类别", "名称", "规格类型", "参数", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)"};
String[] columns2 = {"tempId", "type", "name", "spec", "param", "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);
@ -224,7 +224,7 @@ public class ProjectController extends BaseController {
} else {
costTaxRates = costTaxSb.toString();
}
String[] headers3 = {"序号", "大类", "类别", "名称", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)", "签约方", "是否垫资", "预估垫资金额(元)", "支出时间", "支出金额(元)", "付款方式", "备注"};
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);
//项目管理成本明细
@ -844,6 +844,14 @@ public class ProjectController extends BaseController {
return "admin/project_select_role_user";
}
@ResponseBody
@RequestMapping("/info/{projectId}")
public ResponseMsg info(@PathVariable int projectId,Map<String, Object> model) {
Project project = projectService.getProject(projectId);
model.put("info",project);
return ResponseMsg.buildSuccessData(project);
}
/**
* check
*/
@ -1046,8 +1054,8 @@ public class ProjectController extends BaseController {
@RequestMapping("/incomeTemplate")
public void incomeTemplate(HttpServletResponse response) throws Exception{
String[] headers = new String[]{"类别", "名称", "单位", "数量", "单价", "税率(%)"};
downloadHeader(response , Utils.generateExcelName("收明细表批量导入模板"));
String[] headers = new String[]{"类别", "名称", "规格类型", "参数", "单位", "数量", "单价", "税率(%)"};
downloadHeader(response , Utils.generateExcelName("收明细表批量导入模板"));
ExportUtils exportUtils = new ExportUtils(headers);
exportUtils.write(response.getOutputStream());
}
@ -1081,7 +1089,7 @@ public class ProjectController extends BaseController {
@RequestMapping("/costTemplate")
public void costTemplate(HttpServletResponse response) throws Exception{
String[] headers = new String[]{"大类", "类别", "名称", "单位", "数量", "单价", "税率(%)", "签约方", "是否垫资", "预估垫资金额(元)", "支出时间", "支出金额(元)", "付款方式", "备注"};
String[] headers = new String[]{"费用项目", "采购类别", "名称", "单位", "数量", "单价", "税率(%)", "签约方", "是否垫资", "预估垫资金额(元)", "支出时间", "支出金额(元)", "付款方式", "备注"};
downloadHeader(response , Utils.generateExcelName("采购成本明细表批量导入模板"));
ExportUtils exportUtils = new ExportUtils(headers);
exportUtils.write(response.getOutputStream());
@ -1114,7 +1122,7 @@ public class ProjectController extends BaseController {
@RequestMapping("/estimateMainExport")
public void estimateMainExport(HttpServletResponse response, @RequestParam int id) throws Exception{
Project project = projectService.findById(id);
response.setHeader("Content-Disposition", "attachment;filename=".concat(new String((Utils.generateExcelName(project.getName() + "-项目立项(概算)基本信息")).getBytes(), StandardCharsets.ISO_8859_1)));
response.setHeader("Content-Disposition", "attachment;filename=".concat(new String((Utils.generateExcelName(project.getName() + "-项目立项(概算)信息")).getBytes(), StandardCharsets.ISO_8859_1)));
response.setHeader("Connection", "close");
response.setHeader("Content-Type", "application/vnd.ms-excel");
ServletOutputStream outputStream = response.getOutputStream();
@ -1125,7 +1133,7 @@ public class ProjectController extends BaseController {
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", "principal", "contractTime", "bidsTime", "isSecondStr", "signTypeStr", "mainContractCollectionTerms", "mainContractResolvePlan", "calculationCollection"};
exportExcelUtils.exportProjectExcel(headers0, columns0, project, "yyyy-MM-dd", 0, "项目立项(概算)基本信息", outputStream);
exportExcelUtils.exportProjectExcel(headers0, columns0, project, "yyyy-MM-dd", 0, "项目立项(概算)信息", outputStream);
exportExcelUtils.end(outputStream);
}
@ -1155,7 +1163,7 @@ public class ProjectController extends BaseController {
@RequestMapping("/incomeExport")
public void incomeExport(HttpServletResponse response, @RequestParam int id) throws Exception{
Project project = projectService.findById(id);
response.setHeader("Content-Disposition", "attachment;filename=".concat(new String((Utils.generateExcelName(project.getName() + "-收明细表")).getBytes(), StandardCharsets.ISO_8859_1)));
response.setHeader("Content-Disposition", "attachment;filename=".concat(new String((Utils.generateExcelName(project.getName() + "-收明细表")).getBytes(), StandardCharsets.ISO_8859_1)));
response.setHeader("Connection", "close");
response.setHeader("Content-Type", "application/vnd.ms-excel");
ServletOutputStream outputStream = response.getOutputStream();
@ -1164,9 +1172,9 @@ public class ProjectController extends BaseController {
//收入明细
List<ProjectBudgetIncomeDetail> budgetIncomeDetail = projectBudgetService.getBudgetIncomeDetail(project);
BigDecimal incomeTotalAmount = projectBudgetService.getBudgetIncomeAmount(project);
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);
String[] headers2 = {"序号", "类别", "名称", "规格类型", "参数", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)"};
String[] columns2 = {"tempId", "type", "name", "spec", "param", "unit", "amount", "price", "taxRate", "totalTaxInclude", "totalTaxExclude", "totalTax"};
exportExcelUtils.exportIncomeDetailExcel(headers2, columns2, project, budgetBean, budgetIncomeDetail, incomeTotalAmount, "yyyy-MM-dd", 0, "收明细表", outputStream);
exportExcelUtils.end(outputStream);
}
@ -1212,7 +1220,7 @@ public class ProjectController extends BaseController {
BigDecimal costPayAmountTotal = projectBudgetService.getBudgetCostPayAmountTotal(project);
List<ProcurementType> procurementTypes = procurementTypeService.allProcurementTypeList();
Map<Integer, String> procurementMap = procurementTypes.stream().collect(Collectors.toMap(ProcurementType::getId, ProcurementType::getName));
String[] headers3 = {"序号", "大类", "类别", "名称", "单位", "数量", "单价", "税率(%)", "含税总金额(元)", "不含税金额(元)", "税金(元)", "签约方", "是否垫资", "预估垫资金额(元)", "支出时间", "支出金额(元)", "付款方式", "备注"};
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);
@ -1386,4 +1394,10 @@ public class ProjectController extends BaseController {
return "admin/project_final_list";
}
@ResponseBody
@RequestMapping("/stageRefreshSave/{projectId}")
public ResponseMsg stageRefreshSave(@RequestBody String json, @PathVariable int projectId) {
return projectService.stageRefreshSave(json,projectId);
}
}

View File

@ -257,6 +257,12 @@ public class Project {
@Column(name = "calculation_collection")
private String calculationCollection;
@Column(name = "stage")
private Integer stage;
@Column(name = "stage_remark")
private String stageRemark;
@Transient
private String contractRound;
@ -1003,4 +1009,20 @@ public class Project {
public void setRemark(String remark) {
this.remark = remark;
}
public Integer getStage() {
return stage;
}
public void setStage(Integer stage) {
this.stage = stage;
}
public String getStageRemark() {
return stageRemark;
}
public void setStageRemark(String stageRemark) {
this.stageRemark = stageRemark;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@ package cn.palmte.work.model;
import javax.persistence.*;
/**
*
*
*/
@Entity
@Table(name = "project_budget_income_detail")

View File

@ -26,6 +26,10 @@ public class ProjectBudgetIncomeDetailBase {
private String name;
private String spec;
private String param;
private String unit;
private BigDecimal amount;
private BigDecimal price;
@ -65,6 +69,22 @@ public class ProjectBudgetIncomeDetailBase {
this.name = name;
}
public String getSpec() {
return spec;
}
public void setSpec(String spec) {
this.spec = spec;
}
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
public String getUnit() {
return unit;
}

View File

@ -14,6 +14,8 @@ public class ProjectBudgetIncomeDetailTemp extends ProjectBudgetIncomeDetailBase
projectBudgetIncomeDetail.setProjectId(getProjectId());
projectBudgetIncomeDetail.setName(getName());
projectBudgetIncomeDetail.setType(getType());
projectBudgetIncomeDetail.setSpec(getSpec());
projectBudgetIncomeDetail.setParam(getParam());
projectBudgetIncomeDetail.setUnit(getUnit());
projectBudgetIncomeDetail.setAmount(getAmount());
projectBudgetIncomeDetail.setPrice(getPrice());

View File

@ -4,7 +4,7 @@ import javax.persistence.Entity;
import javax.persistence.Table;
/**
*
*
*/
@Entity
@Table(name = "project_budget_income_plan_detail")

View File

@ -4,7 +4,7 @@ import javax.persistence.Entity;
import javax.persistence.Table;
/**
*
*
*/
@Entity
@Table(name = "project_budget_income_plan_detail_temp")

View File

@ -0,0 +1,6 @@
package cn.palmte.work.model;
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProjectBudgetRepository extends JpaRepository<ProjectBudget, Integer> {
}

View File

@ -1070,6 +1070,12 @@ public class ProjectBudgetService {
key = "名称";
o1 = m.get(key);
temp.setName((String) o1);
key = "规格类型";
o1 = m.get(key);
temp.setName((String) o1);
key = "参数";
o1 = m.get(key);
temp.setName((String) o1);
key = "单位";
o1 = m.get(key);
temp.setUnit((String) o1);
@ -1130,7 +1136,7 @@ public class ProjectBudgetService {
String key;
Object o1;
temp.setProjectId(id);
key = "大类";
key = "费用项目";
o1 = m.get(key);
String type = (String) o1;
if ("设备".equals(type)) {
@ -1142,16 +1148,16 @@ public class ProjectBudgetService {
} else if ("其他".equals(type)) {
temp.setType(4);
} else {
throw new Exception("该大类不存在");
throw new Exception("该费用项目不存在");
}
key = "类别";
key = "采购类别";
o1 = m.get(key);
String category = (String) o1;
ProcurementType procurementType = procurementTypeRepository.findByName(category);
if (procurementType != null && procurementType.getType() == temp.getType()) {
temp.setCategory(procurementType.getId());
} else {
throw new Exception("该类别不存在或者与大类不匹配");
throw new Exception("该采购类别不存在或者与费用项目不匹配");
}
key = "名称";
o1 = m.get(key);

View File

@ -112,6 +112,9 @@ public class ProjectService {
}
if(StrUtil.isNotEmpty(searchInfo.get("extend")) && "0".equals(searchInfo.get("extend"))) {
if (StrUtil.isNotEmpty(searchInfo.get("stage")) && !"-1".equals(searchInfo.get("stage"))) {
queryHelper.addCondition("p.stage=?", Integer.parseInt(searchInfo.get("stage")));
}
if (StrUtil.isNotEmpty(searchInfo.get("isSecond")) && !"-1".equals(searchInfo.get("isSecond"))) {
queryHelper.addCondition("p.is_second=?", Integer.parseInt(searchInfo.get("isSecond")));
}
@ -895,4 +898,20 @@ public class ProjectService {
}
}
public ResponseMsg stageRefreshSave(String json,int projectId) {
JSONObject obj = JSON.parseObject(json);
int stage = obj.getIntValue("stage");
String stageRemark = obj.getString("stageRemark");
Project project = projectRepository.getOne(projectId);
if(null == project){
return ResponseMsg.buildFailedMsg("项目不存在");
}
project.setStage(stage);
project.setStageRemark(stageRemark);
projectRepository.saveAndFlush(project);
return ResponseMsg.buildSuccessMsg("保存成功");
}
}

View File

@ -5753,7 +5753,7 @@ CREATE TABLE `project_budget_income_detail` (
`price` decimal(16,2) NOT NULL COMMENT '单价',
`tax_rate` decimal(16,2) NOT NULL COMMENT '税率',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
-- ----------------------------
-- Records of project_budget_income_detail
@ -5773,7 +5773,7 @@ CREATE TABLE `project_budget_income_detail_temp` (
`price` decimal(16,2) NOT NULL COMMENT '单价',
`tax_rate` decimal(16,2) NOT NULL COMMENT '税率',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
-- ----------------------------
-- Records of project_budget_income_detail_temp

View File

@ -8268,7 +8268,7 @@ CREATE TABLE `project_budget_income_detail` (
`price` decimal(16,2) NOT NULL COMMENT '单价',
`tax_rate` decimal(16,2) NOT NULL COMMENT '税率',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=711 DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
) ENGINE=InnoDB AUTO_INCREMENT=711 DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
-- ----------------------------
-- Records of project_budget_income_detail
@ -8393,7 +8393,7 @@ CREATE TABLE `project_budget_income_detail_temp` (
`price` decimal(16,2) NOT NULL COMMENT '单价',
`tax_rate` decimal(16,2) NOT NULL COMMENT '税率',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=701 DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
) ENGINE=InnoDB AUTO_INCREMENT=701 DEFAULT CHARSET=utf8mb4 COMMENT='明细表';
-- ----------------------------
-- Records of project_budget_income_detail_temp

View File

@ -92,12 +92,12 @@ $(function () {
var dataIncome = collectData("am-modal-prompt-input-income");
if (dataIncome.length <= 0) {
window.confirm('请填写收明细表');
window.confirm('请填写收明细表');
$("#saveDraft").attr('disabled', false);
return;
}
var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL2, "收明细表");
var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL2, "收明细表");
if (dataIncomeCheck == null) {
$("#saveDraft").attr('disabled', false);
return;
@ -205,12 +205,12 @@ $(function () {
var dataIncome = collectData("am-modal-prompt-input-income");
if (dataIncome.length <= 5) {
window.confirm('请填写收明细表');
window.confirm('请填写收明细表');
$("#saveApprove").attr('disabled', false);
return;
}
var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL, "收明细表");
var dataIncomeCheck = convertDetailVerifyCheck(dataIncome, INCOME_DETAIL, "收明细表");
if (dataIncomeCheck == null) {
$("#saveApprove").attr('disabled', false);
return;

View File

@ -4,8 +4,8 @@
//COST_DETAIL_ARR=["type","category","name","unit","amount","price","taxRate","totalTaxInclude","totalTaxExclude"];
COST_DETAIL2={
"num":[false,"序号","string"],
"type":[false,"大类","string"],
"category":[false,"类别","string"],
"type":[false,"费用项目","string"],
"category":[false,"采购类别","string"],
"name":[false,"名称","string"],
"unit":[false,"单位","string"],
"amount":[false,"数量","number"],
@ -25,8 +25,8 @@ COST_DETAIL2={
COST_DETAIL={
"num":[false,"序号","string"],
"type":[true,"大类","string"],
"category":[true,"类别","string"],
"type":[true,"费用项目","string"],
"category":[true,"采购类别","string"],
"name":[true,"名称","string"],
"unit":[true,"单位","string"],
"amount":[true,"数量","number"],

View File

@ -6,6 +6,8 @@ INCOME_DETAIL2={
"num":[false,"序号","string"],
"type":[false,"类别","string"],
"name":[false,"名称","string"],
"spec":[false,"规格类型","string"],
"param":[false,"参数","string"],
"unit":[false,"单位","string"],
"amount":[false,"数量","number"],
"price":[false,"单价","price"],
@ -19,6 +21,8 @@ INCOME_DETAIL={
"num":[false,"序号","string"],
"type":[true,"类别","string"],
"name":[true,"名称","string"],
"spec":[true,"规格类型","string"],
"param":[true,"参数","string"],
"unit":[true,"单位","string"],
"amount":[true,"数量","number"],
"price":[true,"单价","price"],
@ -71,7 +75,7 @@ $(function () {
});
});
//保存收明细表
//保存收明细表
$(function () {
$("#incomeTableSave").click(function () {
var data = collectData("am-modal-prompt-input-income");
@ -176,6 +180,8 @@ function appendTrIncome() {
' </td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
' <td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income"></td>\n' +
' <td><input type="text" maxlength="8" class="number am-modal-prompt-input am-modal-prompt-input-income input-changeable-amount input-changeable-amount-income"></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-income input-changeable-price input-changeable-price-income"></td>\n' +
' <td><input type="text" min="0.00" max="99.99" step="0.01" maxlength="5" class="number am-modal-prompt-input am-modal-prompt-input-income input-changeable-tax-rate input-changeable-tax-rate-income"></td>\n' +

View File

@ -352,12 +352,12 @@ function verifyBudgetPlan(){
//从采购成本明细中取“设备”大类下的总计---设备支出
if(costPurchaseDeviceTaxInclude != input_total_device_cost_budget_plan){
return "采购成本明细中取“设备”大类下的总计["+costPurchaseDeviceTaxInclude+"]与设备支出["+input_total_device_cost_budget_plan+"]不等";
return "采购成本明细中取“设备”费用项目下的总计["+costPurchaseDeviceTaxInclude+"]与设备支出["+input_total_device_cost_budget_plan+"]不等";
}
//从采购成本明细中取“服务+施工+其他”大类的总计---工程支出
var t = f2(f2(costPurchaseBuildTaxInclude)+f2(costPurchaseServiceTaxInclude)+f2(costPurchaseOtherTaxInclude));
if(t != f2(input_total_engineer_cost_budget_plan)){
return "采购成本明细中取“服务+施工+其他”大类的总计["+t+"]与工程支出["+input_total_engineer_cost_budget_plan+"]不等";
return "采购成本明细中取“服务+施工+其他”费用项目的总计["+t+"]与工程支出["+input_total_engineer_cost_budget_plan+"]不等";
}
//从项目管理成本取总计金额--经营性开支
if(costProjectManageTaxInclude != input_total_project_manage_budget_plan){

View File

@ -155,7 +155,7 @@
<!--选项卡tabsbegin-->
<div class="am-tabs palm-tabs outer" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs palm-tabs-nav">
<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>-->
<#-- </#if>-->
@ -172,7 +172,7 @@
</ul>
<div class="am-tabs-bd palm-tabs-bd">
<#-- 项目立项(概算)基本信息 展示内容 -->
<#-- 项目立项(概算)信息 展示内容 -->
<div <#if check==1>class="am-tab-panel am-fade am-in am-active" <#else> class="am-tab-panel am-fade am-in"</#if> id="tab1">
<input name="id" id="id" type="hidden" value="${project.id}" />
<input name="type" id="type" type="hidden" value="${type}"/>
@ -193,7 +193,7 @@
<!--startprint-->
<table id="myTable" class="am-table am-table-bordered">
<tr class="am-text-nowrap">
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)基本信息</th>
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)信息</th>
<input type="hidden" style="border-style:none;" name="id" id="id" value="${id!}"/>
</tr>
<tr class="am-text-nowrap">
@ -396,6 +396,43 @@
>${project.calculationCollection!}</textarea>
</td>
</tr>
<tr class="am-text-nowrap">
<th class="table-title" colspan="1" ><span style="font-size: 15px">项目阶段:</span></th>
<td class="table-title" colspan="5" >
<#if project.stage??>
<#if (project.stage) =0>
<input readonly value="S0-概算立项"/>
<#elseif (project.stage) =1>
<input readonly value="S1-项目调研"/>
<#elseif (project.stage) =2>
<input readonly value="S2-方案设计"/>
<#elseif (project.stage) =3>
<input readonly value="S3-预算评估"/>
<#elseif (project.stage) =4>
<input readonly value="S4-招标期"/>
<#elseif (project.stage) =5>
<input readonly value="S5-合同期"/>
<#elseif (project.stage) =6>
<input readonly value="S6-交付期"/>
<#elseif (project.stage) =7>
<input readonly value="S7-结算期"/>
<#elseif (project.stage) =8>
<input readonly value="S8-决算期"/>
<#elseif (project.stage) =9>
<input readonly value="L-项目丢失"/>
</#if>
<#else>
<input readonly value=""/>
</#if>
</td>
</tr>
<tr class="am-text-nowrap">
<th class="table-title" colspan="1" ><span style="font-size: 15px">当前进度描述:</span></th>
<td class="table-title" colspan="5" >
<textarea rows="3" cols="20" style="border-style:none;background-color: white;" disabled="disabled"
>${project.stageRemark!}</textarea>
</td>
</tr>
</table>
</div>
<#-- 项目预算信息 展示内容 -->
@ -406,7 +443,7 @@
<div class="am-tabs palm-tabs inner" data-am-tabs id="subTab">
<ul class="am-tabs-nav am-nav am-nav-tabs palm-tabs-nav">
<li class="am-active"><a href="#tab35">预算信息</a></li>
<li><a href="#tab31">收明细表</a></li>
<li><a href="#tab31">收明细表</a></li>
<li><a href="#tab36">收款计划表</a></li>
<li><a href="#tab32">采购成本明细表</a></li>
<li><a href="#tab33">项目管理成本表</a></li>
@ -415,7 +452,7 @@
</div>
<div class="am-tabs-bd palm-tabs-bd">
<div class="am-tab-panel am-fade am-in" id="tab31">
<#--<span class="am-text-lg">收明细表</span>-->
<#--<span class="am-text-lg">收明细表</span>-->
<div class="fixed-section">
<div class="am-modal-bd">
<div class="fixed-actions">
@ -436,6 +473,8 @@
<th>序号</th>
<th>类别</th>
<th>名称</th>
<th>规格类型</th>
<th>参数</th>
<th>单位</th>
<th>数量</th>
<th>单价</th>
@ -472,6 +511,12 @@
<td><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-income"
value="${incomeDetail.name!}"></td>
<td><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-income"
value="${incomeDetail.spec!}"></td>
<td><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-income"
value="${incomeDetail.param!}"></td>
<td><input type="text" readonly
class="am-modal-prompt-input am-modal-prompt-input-income"
value="${incomeDetail.unit!}"></td>
@ -509,6 +554,8 @@
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income input-changeable-total-amount-income" value="${Utils.format(incomeTotalAmount,'0.00')}" readonly <#--onkeyup="integerNumber(this)"-->></td>
<td></td>
<td></td>
@ -524,7 +571,7 @@
</div>
</div>
<div class="am-tab-panel am-fade am-in" id="tab36">
<#--<span class="am-text-lg">收明细表</span>-->
<#--<span class="am-text-lg">收明细表</span>-->
<div class="fixed-section">
<div class="am-modal-bd">
<div class="fixed-actions">
@ -597,8 +644,8 @@
<thead>
<tr>
<th>序号</th>
<th>大类</th>
<th>类别</th>
<th>费用项目</th>
<th>采购类别</th>
<th>名称</th>
<th>单位</th>
<th>数量</th>
@ -1033,7 +1080,7 @@
</table>
<!--endprint-->
</div>
<#--<span class="am-text-primary"><a style="cursor: pointer" id="income-detail">收明细表</a></span>
<#--<span class="am-text-primary"><a style="cursor: pointer" id="income-detail">收明细表</a></span>
<span class="am-text-primary"><a style="cursor: pointer" id="cost-detail">采购成本明细表</a></span>
<span class="am-text-primary"><a style="cursor: pointer" id="cost-project-manage-detail">项目管理成本表</a></span>
<span class="am-text-primary budget-plan-detail"><a style="cursor: pointer">资金计划表</a></span>-->
@ -2138,11 +2185,11 @@
</div>
<#--收明细表弹窗-->
<#--收明细表弹窗-->
<div class="am-modal am-modal-prompt" style="width: 1200px;max-height:600px;overflow-y:auto;"
tabindex="-1" id="my-prompt-income-detail">
<div class="am-modal-dialog">
<div class="am-modal-hd">销售收明细表——${project.name}</div>
<div class="am-modal-hd">销售收明细表——${project.name}</div>
<div class="am-modal-bd">
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;"
id="incomeTable">

View File

@ -93,9 +93,9 @@
<!--选项卡tabsbegin-->
<div class="am-tabs palm-tabs" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs palm-tabs-nav">
<li class="am-active"><a href="#tab1">项目立项(概算)基本信息</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="#tab3">收明细表</a></li>
<li><a href="#tab8">收款计划表</a></li>
<li><a href="#tab4">采购成本明细表</a></li>
<li><a href="#tab5">项目管理成本表</a></li>
@ -109,7 +109,7 @@
<!--验证表单元素validate) begin-->
<table id="myTable" class="am-table am-table-bordered">
<tr class="am-text-nowrap">
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)基本信息</th>
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)信息</th>
<input type="hidden" style="border-style:none;" name="id" id="id" value="${id!}"/>
</tr>
<tr class="am-text-nowrap">
@ -341,6 +341,8 @@
<th>序号</th>
<th width="100px">类别</th>
<th>名称</th>
<th>规格类型</th>
<th>参数</th>
<th>单位</th>
<th>数量</th>
<th>单价</th>
@ -364,6 +366,8 @@
</select>
</td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income" value="${incomeDetail.name!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income" value="${incomeDetail.spec!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income" value="${incomeDetail.param!}"></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income" value="${incomeDetail.unit!}"></td>
<td><input type="text" maxlength="14" class="number am-modal-prompt-input am-modal-prompt-input-income input-changeable-amount input-changeable-amount-income" value="${Utils.format(incomeDetail.amount,'0')}" oninput="if(value.length>8)value=value.slice(0,8)" <#--onkeyup="integerNumber(this)"-->></td>
<td><input type="text" maxlength="19" class="price am-modal-prompt-input am-modal-prompt-input-income input-changeable-price input-changeable-price-income" value="${Utils.format2(incomeDetail.price,'0')}" oninput="if(value.length>19)value=value.slice(0,19)"></td>
@ -380,6 +384,8 @@
<td width="100px"></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td><input type="text" class="am-modal-prompt-input am-modal-prompt-input-income input-changeable-total-amount-income" value="${Utils.format(incomeTotalAmount,'0')}" readonly <#--onkeyup="integerNumber(this)"-->></td>
<td></td>
<td></td>
@ -471,8 +477,8 @@
<thead style="display:block;width: 1810px;">
<tr>
<th width="60px">序号</th>
<th width="70px">大类</th>
<th width="150px">类别</th>
<th width="70px">费用项目</th>
<th width="150px">采购类别</th>
<th width="100px">名称</th>
<th width="80px">单位</th>
<th width="100px">数量</th>
@ -804,7 +810,7 @@
</div>
<div class="am-tab-panel am-fade am-in" id="tab7">
<span>收入</span>
<#-- <span class="am-text-primary"><a style="cursor: pointer" id="income-detail">收明细表</a></span>-->
<#-- <span class="am-text-primary"><a style="cursor: pointer" id="income-detail">收明细表</a></span>-->
<table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;">
<tbody>
<tr>

View File

@ -39,7 +39,7 @@
<!--选项卡tabsbegin-->
<div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab1">项目立项(概算)基本信息</a></li>
<li class="am-active"><a href="#tab1">项目立项(概算)信息</a></li>
<#-- <li><a href="#tab2">项目立项(概算)其他信息</a></li>-->
</ul>
<div class="am-tabs-bd">
@ -49,7 +49,7 @@
<input name="id" id="id" type="hidden" value="${projectId}" />
<table id="myTable" class="am-table am-table-bordered">
<tr class="am-text-nowrap">
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)基本信息</th>
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)信息</th>
<input type="hidden" style="border-style:none;" name="id" id="id" value="${id!}"/>
</tr>
<tr class="am-text-nowrap">

View File

@ -44,7 +44,7 @@
<!--选项卡tabsbegin-->
<div class="am-tabs am-margin" data-am-tabs>
<ul class="am-tabs-nav am-nav am-nav-tabs">
<li class="am-active"><a href="#tab1">项目立项(概算)基本信息</a></li>
<li class="am-active"><a href="#tab1">项目立项(概算)信息</a></li>
<#-- <li><a href="#tab2">项目立项(概算)其他信息</a></li>-->
</ul>
<div class="am-tabs-bd">
@ -53,7 +53,7 @@
<!--验证表单元素validate) begin-->
<table id="myTable" class="am-table am-table-bordered">
<tr class="am-text-nowrap">
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)基本信息</th>
<th class="table-title" colspan="6" style="text-align: center">项目立项(概算)信息</th>
<input type="hidden" style="border-style:none;" name="id" id="id" value="${id!}"/>
</tr>
<tr class="am-text-nowrap">

View File

@ -176,7 +176,7 @@
</div>
</div>
<div class="st-col">
<div class="st-col-title">项目状态</div>
<div class="st-col-title">项目当前状态</div>
<div class="st-col-field">
<select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="status" name="status">
<option value="-1">全部</option>
@ -452,6 +452,27 @@
</div>
</div>
</div>
<!-- 第六行 -->
<div class="flex-row st-row">
<div class="st-col st-col-4">
<div class="st-col-title">项目阶段</div>
<div class="st-col-field">
<select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="qstage" name="qstage">
<option value="-1">全部</option>
<option value="0" <#if qstage?? && qstage='0'>selected</#if>>S0-概算立项</option>
<option value="1" <#if qstage?? && qstage='1'>selected</#if>>S1-项目调研</option>
<option value="2" <#if qstage?? && qstage='2'>selected</#if>>S2-方案设计</option>
<option value="3" <#if qstage?? && qstage='3'>selected</#if>>S3-预算评估</option>
<option value="4" <#if qstage?? && qstage='4'>selected</#if>>S4-招标期</option>
<option value="5" <#if qstage?? && qstage='5'>selected</#if>>S5-合同期</option>
<option value="6" <#if qstage?? && qstage='6'>selected</#if>>S6-交付期</option>
<option value="7" <#if qstage?? && qstage='7'>selected</#if>>S7-结算期</option>
<option value="8" <#if qstage?? && qstage='8'>selected</#if>>S8-决算期</option>
<option value="9" <#if qstage?? && qstage='9'>selected</#if>>L-项目丢失</option>
</select>
</div>
</div>
</div>
</div>
<#-- 按钮 -->
<div class="flex-row tools-row">
@ -1027,6 +1048,10 @@
</button>
</#if>
<button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary"
onclick="stageRefreshModal(${list.id})">
<span class="am-icon-pencil-square-o"></span>项目阶段更新
</button>
</div>
</div>
</td>
@ -1188,6 +1213,55 @@
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
<#--项目阶段更新弹窗-->
<div class="modal fade" id="myModal4" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content" style="width: 500px">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">项目阶段更新</h4>
</div>
<input type="hidden" id="stageProjectId" name="stageProjectId" value=''/>
<div class="am-g am-form-group am-margin-top" style="display: flex;">
<div class="am-u-sm-3 am-u-md-3 am-text-right">
<span style="color: red;">*</span>项目阶段</div>
<div class="am-u-sm-6 am-u-md-6">
<select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 300,searchBox: 1}"
id="stage" name="stage">
<option value="0" <#if stage?? && stage='0'>selected</#if>>S0-概算立项</option>
<option value="1" <#if stage?? && stage='1'>selected</#if>>S1-项目调研</option>
<option value="2" <#if stage?? && stage='2'>selected</#if>>S2-方案设计</option>
<option value="3" <#if stage?? && stage='3'>selected</#if>>S3-预算评估</option>
<option value="4" <#if stage?? && stage='4'>selected</#if>>S4-招标期</option>
<option value="5" <#if stage?? && stage='5'>selected</#if>>S5-合同期</option>
<option value="6" <#if stage?? && stage='6'>selected</#if>>S6-交付期</option>
<option value="7" <#if stage?? && stage='7'>selected</#if>>S7-结算期</option>
<option value="8" <#if stage?? && stage='8'>selected</#if>>S8-决算期</option>
<option value="9" <#if stage?? && stage='9'>selected</#if>>L-项目丢失</option>
</select>
</div>
<div class="am-u-sm-3 am-u-md-3 input-msg"></div>
</div>
<div class="am-g am-form-group am-margin-top" style="display: flex;">
<div class="am-u-sm-3 am-u-md-3 am-text-right">
<span style="color: red;">*</span>当前进度描述</div>
<div class="am-u-sm-6 am-u-md-6">
<textarea id="stageRemark" minlength="1" rows="3" cols="40" maxlength="1000" class="am-input"></textarea>
</div>
<div class="am-u-sm-3 am-u-md-3 input-msg"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" data-am-modal-cancel>关闭</button>
<button type="button" class="btn btn-primary" data-am-modal-confirm onclick="stageRefreshSave()">提交</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>
<!-- /.modal -->
@ -1315,6 +1389,8 @@
keywordsObj.otherStart = $("#otherStart").val();
if ($("#otherEnd").val())
keywordsObj.otherEnd = $("#otherEnd").val();
if ($("#qstage").val())
keywordsObj.stage = $("#qstage").val();
}
if ($("#customer").val())
keywordsObj.customer = $("#customer").val();
@ -1556,6 +1632,44 @@
});
};
/**
* 项目阶段更新保存
*/
var stageRefreshSave = function () {
var stage = $("#stage").val();
console.info("=============="+stage);
var stageRemark = $("#stageRemark").val();
var projectId = $("#stageProjectId").val();
if (stage == '') {
layer.alert("请选择项目阶段");
return;
}
if (stageRemark == '') {
layer.alert("请填写当前进度描述");
return;
}
var params = {
stage: stage,
stageRemark: stageRemark
};
$.ajax({
url: '${base}/project/stageRefreshSave/' + projectId,
data: JSON.stringify(params),
dataType: "json",
contentType: "application/json",
type: 'post',
async: false,
success: function (data) {
if (data.status == 0) {
layer.alert(data.msg);
window.location.href=window.location.href;
} else if (data.status == 1) {
layer.alert(data.msg);
}
}
});
};
//上传会签单
var generateFileupload = function (name) {
@ -1687,6 +1801,30 @@
});
};
var stageRefreshModal = function(id) {
$.ajax({
url: "${base}/project/info/" + id,
dataType: "json",
contentType: "application/json",
type: 'post',
async: false,
success: function (data) {
$("#stage").val(data.data.stage);
$("#stageRemark").val(data.data.stageRemark);
}
});
$("#stageProjectId").val(id);
$('#myModal4').modal({
relatedElement: this,
onConfirm: function() {
console.log("提交");
},
onCancel: function() {
console.log("取消");
}
});
};
var projectNoCheck = function () {
var newProjectNo = $("#newProjectNo").val();
var id = $("#modelId").val();

View File

@ -173,7 +173,7 @@
</div>
</div>
<div class="st-col">
<div class="st-col-title">项目状态</div>
<div class="st-col-title">项目当前状态</div>
<div class="st-col-field">
<select data-am-selected="{btnSize: 'sm',btnWidth: '100%',maxHeight: 500,searchBox: 1}" id="status" name="status">
<option value="-1">全部</option>

View File

@ -48,7 +48,8 @@
});
}
}
});
});
$('#pager').prepend('<li><a style="pointer-events:none;">共${(pager.totalRow)!10}条<\/a><\/li>');
</script>