销售合同清单明细

master
Harry Yang 2022-12-13 18:16:15 +08:00
parent b313dd6f6b
commit b115b252ee
2 changed files with 91 additions and 28 deletions

View File

@ -19,9 +19,12 @@ import java.util.stream.Collectors;
import cn.palmte.work.model.DeptRepository;
import cn.palmte.work.model.Project;
import cn.palmte.work.model.ProjectBudgetIncomeDetail;
import cn.palmte.work.model.ProjectRepository;
import cn.palmte.work.model.enums.ProcessStatus;
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>
@ -34,10 +37,12 @@ public class ProcessController {
private final DeptRepository deptRepository;
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.deptRepository = deptRepository;
this.projectBudgetService = projectBudgetService;
}
static class FormMetadata {
@ -129,7 +134,7 @@ public class ProcessController {
}
// 销售合同流程
@Setter
static class SaleContractForm {
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) {
}
}

View File

@ -229,24 +229,25 @@
<div class="am-u-sm-12 am-u-md-12" v-if="isSaleContractDetailMode">
<el-table border :data="businessPurchaseDetails">
<el-table-column type="index" :index="1" 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="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="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="fee" 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="name" label="名称"></el-table-column>
<el-table-column prop="spec" label="规格型号"></el-table-column>
<el-table-column prop="param" label="参数"></el-table-column>
<el-table-column prop="unit" label="单位"></el-table-column>
<el-table-column prop="amount" label="数量"></el-table-column>
<el-table-column prop="price" label="单价"></el-table-column>
<el-table-column prop="taxRate" label="税率"></el-table-column>
<el-table-column prop="totalTaxInclude" label="含税金额"></el-table-column>
<el-table-column prop="totalTaxExclude" 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="expirationDate" label="质保期"></el-table-column>
</el-table>
<el-row justify="space-around" type="flex" style="margin: 20px">
<el-button type="info" @click="goToSaleContractProcess">保存并返回上一级</el-button>
<el-row style="margin: 20px 0">
<el-button type="info" @click="goToSaleContractProcess">返回上一级</el-button>
<el-button type="primary" @click="submitToSaleContractProcess">保存并返回上一级</el-button>
</el-row>
</div>
@ -590,14 +591,8 @@
}
],
fileList: [],
businessPurchaseDetails: [
{
fee: 100
},
{
fee: 200
}
],
saleContractDetails: [],
businessPurchaseDetails: [],
showBusinessPurchaseDetails: false,
}
}
@ -620,6 +615,22 @@
},
goToSaleContractDetail() {
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) {
@ -635,10 +646,7 @@
}])
}
else {
callback(data.map(project => ({
name: project.name,
id: project.id,
})))
callback(data)
}
})
.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) {
console.log(file, fileList);
},