销售合同清单明细

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.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) {
}
} }

View File

@ -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);
}, },