销售合同清单明细
parent
b313dd6f6b
commit
b115b252ee
|
@ -19,9 +19,12 @@ import java.util.stream.Collectors;
|
||||||
|
|
||||||
import cn.palmte.work.model.DeptRepository;
|
import cn.palmte.work.model.DeptRepository;
|
||||||
import cn.palmte.work.model.Project;
|
import cn.palmte.work.model.Project;
|
||||||
|
import cn.palmte.work.model.ProjectBudgetIncomeDetail;
|
||||||
import cn.palmte.work.model.ProjectRepository;
|
import cn.palmte.work.model.ProjectRepository;
|
||||||
import cn.palmte.work.model.enums.ProcessStatus;
|
import cn.palmte.work.model.enums.ProcessStatus;
|
||||||
import cn.palmte.work.model.enums.SealType;
|
import cn.palmte.work.model.enums.SealType;
|
||||||
|
import cn.palmte.work.service.ProjectBudgetService;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
* @author <a href="https://github.com/TAKETODAY">Harry Yang</a>
|
||||||
|
@ -34,10 +37,12 @@ public class ProcessController {
|
||||||
|
|
||||||
private final DeptRepository deptRepository;
|
private final DeptRepository deptRepository;
|
||||||
private final ProjectRepository projectRepository;
|
private final ProjectRepository projectRepository;
|
||||||
|
private final ProjectBudgetService projectBudgetService;
|
||||||
|
|
||||||
public ProcessController(ProjectRepository projectRepository, DeptRepository deptRepository) {
|
public ProcessController(ProjectRepository projectRepository, DeptRepository deptRepository, ProjectBudgetService projectBudgetService) {
|
||||||
this.projectRepository = projectRepository;
|
this.projectRepository = projectRepository;
|
||||||
this.deptRepository = deptRepository;
|
this.deptRepository = deptRepository;
|
||||||
|
this.projectBudgetService = projectBudgetService;
|
||||||
}
|
}
|
||||||
|
|
||||||
static class FormMetadata {
|
static class FormMetadata {
|
||||||
|
@ -129,7 +134,7 @@ public class ProcessController {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 销售合同流程
|
// 销售合同流程
|
||||||
|
@Setter
|
||||||
static class SaleContractForm {
|
static class SaleContractForm {
|
||||||
|
|
||||||
public Integer projectId;
|
public Integer projectId;
|
||||||
|
@ -191,4 +196,29 @@ public class ProcessController {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ResponseBody
|
||||||
|
@GetMapping("/sale-contract-details/{id}")
|
||||||
|
public List<ProjectBudgetIncomeDetail> queryProjectBudgetIncomeDetail(@PathVariable int id) {
|
||||||
|
Project project = new Project();
|
||||||
|
project.setId(id);
|
||||||
|
return projectBudgetService.getBudgetIncomeDetail(project);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Setter
|
||||||
|
public static class SaleContractDetailForm {
|
||||||
|
|
||||||
|
public int id;
|
||||||
|
|
||||||
|
// 5 个字符
|
||||||
|
public String expirationDate;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@ResponseBody
|
||||||
|
@PostMapping("/sale-contract-details")
|
||||||
|
public void saleContractDetails(SaleContractDetailForm form) {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,24 +229,25 @@
|
||||||
<div class="am-u-sm-12 am-u-md-12" v-if="isSaleContractDetailMode">
|
<div class="am-u-sm-12 am-u-md-12" v-if="isSaleContractDetailMode">
|
||||||
<el-table border :data="businessPurchaseDetails">
|
<el-table border :data="businessPurchaseDetails">
|
||||||
<el-table-column type="index" :index="1" label="序号"></el-table-column>
|
<el-table-column type="index" :index="1" label="序号"></el-table-column>
|
||||||
<el-table-column prop="fee" label="类别"></el-table-column>
|
<el-table-column prop="type" label="类别"></el-table-column>
|
||||||
<el-table-column prop="fee" label="名称"></el-table-column>
|
<el-table-column prop="name" label="名称"></el-table-column>
|
||||||
<el-table-column prop="fee" label="规格型号"></el-table-column>
|
<el-table-column prop="spec" label="规格型号"></el-table-column>
|
||||||
<el-table-column prop="fee" label="参数"></el-table-column>
|
<el-table-column prop="param" label="参数"></el-table-column>
|
||||||
<el-table-column prop="fee" label="单位"></el-table-column>
|
<el-table-column prop="unit" label="单位"></el-table-column>
|
||||||
<el-table-column prop="fee" label="数量"></el-table-column>
|
<el-table-column prop="amount" label="数量"></el-table-column>
|
||||||
<el-table-column prop="fee" label="单价"></el-table-column>
|
<el-table-column prop="price" label="单价"></el-table-column>
|
||||||
<el-table-column prop="fee" label="税率"></el-table-column>
|
<el-table-column prop="taxRate" label="税率"></el-table-column>
|
||||||
<el-table-column prop="fee" label="含税金额"></el-table-column>
|
<el-table-column prop="totalTaxInclude" label="含税金额"></el-table-column>
|
||||||
<el-table-column prop="fee" label="不含税金额"></el-table-column>
|
<el-table-column prop="totalTaxExclude" label="不含税金额"></el-table-column>
|
||||||
<el-table-column prop="fee" label="含税总金额"></el-table-column>
|
<el-table-column prop="totalTax" label="含税总金额"></el-table-column>
|
||||||
<el-table-column prop="fee" label="税金"></el-table-column>
|
<el-table-column prop="fee" label="税金"></el-table-column>
|
||||||
<el-table-column prop="fee" label="质保期"></el-table-column>
|
<el-table-column prop="expirationDate" label="质保期"></el-table-column>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<el-row justify="space-around" type="flex" style="margin: 20px">
|
<el-row style="margin: 20px 0">
|
||||||
<el-button type="info" @click="goToSaleContractProcess">保存并返回上一级</el-button>
|
<el-button type="info" @click="goToSaleContractProcess">返回上一级</el-button>
|
||||||
|
<el-button type="primary" @click="submitToSaleContractProcess">保存并返回上一级</el-button>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -590,14 +591,8 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
fileList: [],
|
fileList: [],
|
||||||
businessPurchaseDetails: [
|
saleContractDetails: [],
|
||||||
{
|
businessPurchaseDetails: [],
|
||||||
fee: 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
fee: 200
|
|
||||||
}
|
|
||||||
],
|
|
||||||
showBusinessPurchaseDetails: false,
|
showBusinessPurchaseDetails: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -620,6 +615,22 @@
|
||||||
},
|
},
|
||||||
goToSaleContractDetail() {
|
goToSaleContractDetail() {
|
||||||
this.changeMode(saleContractDetail)
|
this.changeMode(saleContractDetail)
|
||||||
|
const loading = this.$loading({
|
||||||
|
lock: true,
|
||||||
|
text: '正在加载项目',
|
||||||
|
spinner: 'el-icon-loading',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)'
|
||||||
|
})
|
||||||
|
|
||||||
|
fetch("${base}/process/sale-contract-details/" + this.processForm.id)
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => {
|
||||||
|
this.businessPurchaseDetails = data
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
this.$message.error("销售合同清单明细加载失败");
|
||||||
|
})
|
||||||
|
.finally(() => loading.close())
|
||||||
},
|
},
|
||||||
|
|
||||||
queryProject(q, callback) {
|
queryProject(q, callback) {
|
||||||
|
@ -635,10 +646,7 @@
|
||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
callback(data.map(project => ({
|
callback(data)
|
||||||
name: project.name,
|
|
||||||
id: project.id,
|
|
||||||
})))
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
|
@ -710,6 +718,31 @@
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
submitToSaleContractProcess() {
|
||||||
|
const loading = this.$loading({
|
||||||
|
lock: true,
|
||||||
|
text: '正在提交',
|
||||||
|
spinner: 'el-icon-loading',
|
||||||
|
background: 'rgba(0, 0, 0, 0.7)'
|
||||||
|
})
|
||||||
|
|
||||||
|
const processForm = this.processForm
|
||||||
|
fetch("${base}/process/sale-contract-details", {
|
||||||
|
method: 'POST', // or 'PUT'
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify(processForm),
|
||||||
|
}).then(response => {
|
||||||
|
this.goToSaleContractProcess()
|
||||||
|
|
||||||
|
}).catch(err => {
|
||||||
|
this.$message.error("项目提交失败");
|
||||||
|
}).finally(() => loading.close())
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
handleRemove(file, fileList) {
|
handleRemove(file, fileList) {
|
||||||
console.log(file, fileList);
|
console.log(file, fileList);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue