合同流程 优化表单填写和编辑表单
parent
5d0e48ea6b
commit
138f7355f5
|
@ -40,20 +40,29 @@
|
||||||
.el-checkbox {
|
.el-checkbox {
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.supplierChoose {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
[v-cloak] {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="admin-content" id="app">
|
<div class="admin-content" id="app">
|
||||||
<div class="admin-content-body">
|
<div class="admin-content-body">
|
||||||
<div class="am-cf am-padding">
|
<div class="am-cf am-padding">
|
||||||
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">业务应用</strong> /
|
<div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">业务应用</strong> /
|
||||||
<small>{{subTitle}}</small></div>
|
<small v-cloak>{{subTitle}}</small></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="am-g">
|
<div class="am-g" v-cloak>
|
||||||
<#-- 新增销售合同流程 -->
|
<#-- 新增销售合同流程 -->
|
||||||
|
|
||||||
<div class="am-u-sm-12 am-u-md-12" v-if="isSalesContractMode">
|
<div class="am-u-sm-12 am-u-md-12" v-if="isSalesContractMode || isProcurementContractMode">
|
||||||
<el-form :inline="true" ref="saleContractProcessForm" :model="processForm" label-position="right" label-width="100px">
|
<el-form :inline="true" ref="contractProcessForm" :model="processForm" label-position="right" label-width="110px">
|
||||||
|
|
||||||
<div class="am-form-inline">
|
<div class="am-form-inline">
|
||||||
<el-form-item label="项目编号">
|
<el-form-item label="项目编号">
|
||||||
|
@ -218,30 +227,82 @@
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<el-form-item label="合同清单明细">
|
<el-form-item label="合同清单明细">
|
||||||
<el-button type="text" @click="goToSaleContractDetail">详细清单</el-button>
|
<el-button type="text" @click="goToContractDetail">详细清单</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="isProcurementContractMode">
|
|
||||||
供应商比选材料
|
|
||||||
<div class="am-u-sm-12 am-u-md-12" v-if="isProcurementContractMode">
|
|
||||||
<el-table style="width: 100%" border>
|
|
||||||
<el-table-column type="index" :index="1" label="序号" fixed></el-table-column>
|
|
||||||
|
|
||||||
<el-table-column prop="fee" label="公司名称" width="180"></el-table-column>
|
|
||||||
<el-table-column prop="fee" label="合计金额" width="180"></el-table-column>
|
|
||||||
<el-table-column prop="fee" label="服务条款" width="180"></el-table-column>
|
|
||||||
<el-table-column prop="fee" label="付款条件" width="180"></el-table-column>
|
|
||||||
<el-table-column prop="fee" label="税率(%)" width="180"></el-table-column>
|
|
||||||
<el-table-column prop="fee" label="备注"></el-table-column>
|
|
||||||
<el-table-column prop="fee" label="附件"></el-table-column>
|
|
||||||
|
|
||||||
</el-table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
|
||||||
|
<#-- 供应商比选材料 -->
|
||||||
|
<div class="am-u-sm-12 am-u-md-12 supplierChoose" v-if="isProcurementContractMode">
|
||||||
|
<el-alert title="供应商比选材料" type="success" center :closable="false"></el-alert>
|
||||||
|
|
||||||
|
<el-table style="width: 100%" border :data="supplierMaterialsForm" v-model="supplierMaterialsForm" empty-text="暂无">
|
||||||
|
<el-table-column type="index" :index="1" label="序号" fixed></el-table-column>
|
||||||
|
|
||||||
|
<el-table-column prop="companyName" label="公司名称" width="180" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input size="mini" placeholder="请输入公司名称" v-model="scope.row.companyName"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="totalAmount" label="合计金额" width="180" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number size="mini" :precision="2" :step="0.1" :max="100" :min="0"
|
||||||
|
v-model="scope.row.totalAmount"></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="serviceTerms" label="服务条款" width="180" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input size="mini" placeholder="请输入服务条款" v-model="scope.row.serviceTerms"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="paymentTerms" label="付款条件" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input size="mini" placeholder="请输入付款条件" v-model="scope.row.paymentTerms"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="taxRate" label="税率(%)" width="180" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-input-number size="mini" :precision="2" :step="0.1" :max="100" :min="0"
|
||||||
|
v-model="scope.row.taxRate"></el-input-number>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="remark" label="备注" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<#--
|
||||||
|
<el-input type="textarea" size="mini" maxlength="100"
|
||||||
|
v-model="scope.row.remark" placeholder="请输入备注(限制100字)" cols="90"></el-input>
|
||||||
|
-->
|
||||||
|
<el-input size="mini" placeholder="请输入备注"
|
||||||
|
v-model="scope.row.remark"></el-input>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column prop="attachment" label="附件" align="center" width="150">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-tag size="small" v-if="scope.row.attachment">
|
||||||
|
<a :href="scope.row.attachment.uri">
|
||||||
|
<i class="el-icon-document"></i> {{scope.row.attachment.name}}
|
||||||
|
</a>
|
||||||
|
</el-tag>
|
||||||
|
<el-upload v-else class="upload-demo"
|
||||||
|
action="${base}/file/upload"
|
||||||
|
name="files[]"
|
||||||
|
:on-remove="handleRemove"
|
||||||
|
:before-remove="beforeRemove"
|
||||||
|
:on-success="handleFileUploaded"
|
||||||
|
:limit="1"
|
||||||
|
size="mini">
|
||||||
|
<el-button size="small" type="text">上传附件</el-button>
|
||||||
|
</el-upload>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
|
||||||
|
</el-table>
|
||||||
|
|
||||||
|
<el-button type="primary" icon="el-icon-plus" circle size="mini" @click="addSupplierRow"
|
||||||
|
style="float: right;margin-top: 10px;"></el-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-button type="info" @click="backLastPage">返回上一级</el-button>
|
<el-button type="info" @click="backLastPage">返回上一级</el-button>
|
||||||
|
@ -287,7 +348,7 @@
|
||||||
|
|
||||||
<#-- 选择 业务采购清单明细 -->
|
<#-- 选择 业务采购清单明细 -->
|
||||||
|
|
||||||
<div class="am-u-sm-12 am-u-md-12" v-if="isProcurementContractMode">
|
<div class="am-u-sm-12 am-u-md-12" v-if="isProcurementContractDetailMode">
|
||||||
<el-table style="width: 100%" border>
|
<el-table style="width: 100%" border>
|
||||||
|
|
||||||
<el-table-column prop="fee" label="费用项目" width="180"></el-table-column>
|
<el-table-column prop="fee" label="费用项目" width="180"></el-table-column>
|
||||||
|
@ -317,6 +378,12 @@
|
||||||
<el-table-column prop="fee" label="含税总金额(元)"></el-table-column>
|
<el-table-column prop="fee" label="含税总金额(元)"></el-table-column>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
|
<el-row style="margin: 20px 0">
|
||||||
|
<el-button type="info" @click="goToProcurementContract">返回上一级</el-button>
|
||||||
|
<el-button type="primary" @click="goToProcurementContract">保存并返回上一级</el-button>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -331,7 +398,8 @@
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
const newBusinessProcurementContractProcess = "newBusinessProcurementContractProcess"
|
const newBusinessProcurementContractProcess = "newBusinessProcurementContractProcess"
|
||||||
const newBusinessProcurementContractDetail = "newBusinessProcurementContractDetail"
|
const procurementContractDetail = "procurementContractDetail"
|
||||||
|
|
||||||
const saleContractProcess = "saleContractProcess"
|
const saleContractProcess = "saleContractProcess"
|
||||||
const saleContractDetail = "saleContractDetail"
|
const saleContractDetail = "saleContractDetail"
|
||||||
const BUTTON = "btn"
|
const BUTTON = "btn"
|
||||||
|
@ -354,7 +422,7 @@
|
||||||
|
|
||||||
const data = () => {
|
const data = () => {
|
||||||
return {
|
return {
|
||||||
mode: "btn", // btn , newBusinessProcurementContractProcess
|
mode: "btn", // btn
|
||||||
processForm: {
|
processForm: {
|
||||||
sealTypes: [],
|
sealTypes: [],
|
||||||
},
|
},
|
||||||
|
@ -364,7 +432,7 @@
|
||||||
fileList: [],
|
fileList: [],
|
||||||
// 销售合同收入明细
|
// 销售合同收入明细
|
||||||
incomeDetails: [],
|
incomeDetails: [],
|
||||||
selectedDepts: []
|
supplierMaterialsForm: [],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,10 +441,6 @@
|
||||||
this.mode = mode
|
this.mode = mode
|
||||||
},
|
},
|
||||||
|
|
||||||
businessProcurementProcessClick() {
|
|
||||||
const that = this
|
|
||||||
},
|
|
||||||
|
|
||||||
backLastPage() {
|
backLastPage() {
|
||||||
window.history.back();
|
window.history.back();
|
||||||
},
|
},
|
||||||
|
@ -384,10 +448,20 @@
|
||||||
goToSaleContractProcess() {
|
goToSaleContractProcess() {
|
||||||
this.changeMode(saleContractProcess)
|
this.changeMode(saleContractProcess)
|
||||||
},
|
},
|
||||||
goToSaleContractDetail() {
|
|
||||||
|
goToProcurementContract() {
|
||||||
|
this.changeMode(saleContractProcess)
|
||||||
|
},
|
||||||
|
goToContractDetail() {
|
||||||
const { projectId } = this.processForm
|
const { projectId } = this.processForm
|
||||||
if (projectId) {
|
if (projectId) {
|
||||||
this.changeMode(saleContractDetail)
|
// 选择了才能编辑详情
|
||||||
|
if (this.isSalesContractMode) {
|
||||||
|
this.changeMode(saleContractDetail)
|
||||||
|
}
|
||||||
|
else if (this.isProcurementContractMode) {
|
||||||
|
this.changeMode(procurementContractDetail)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.$message.warning("项目还未选择")
|
this.$message.warning("项目还未选择")
|
||||||
|
@ -400,7 +474,6 @@
|
||||||
|
|
||||||
initForm(form) {
|
initForm(form) {
|
||||||
this.processForm = { ...form }
|
this.processForm = { ...form }
|
||||||
console.log(form)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
loadProject(id) {
|
loadProject(id) {
|
||||||
|
@ -438,11 +511,10 @@
|
||||||
name: item.name, url: item.uri
|
name: item.name, url: item.uri
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
||||||
if (process.processType === 'sale_contract') {
|
if (process.processType === 'sale_contract') {
|
||||||
this.changeMode(saleContractProcess)
|
this.changeMode(saleContractProcess)
|
||||||
}
|
}
|
||||||
else if (process.processType === 'business_procurement') {
|
else if (process.processType === 'procurement_contract') {
|
||||||
this.changeMode(newBusinessProcurementContractProcess)
|
this.changeMode(newBusinessProcurementContractProcess)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -469,7 +541,7 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
submit() {
|
submit() {
|
||||||
this.$refs["saleContractProcessForm"].validate((valid) => {
|
this.$refs["contractProcessForm"].validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
const fileList = this.fileList
|
const fileList = this.fileList
|
||||||
if (fileList.length === 0) {
|
if (fileList.length === 0) {
|
||||||
|
@ -603,6 +675,10 @@
|
||||||
return index * 1;
|
return index * 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
addSupplierRow() {
|
||||||
|
this.supplierMaterialsForm.push({})
|
||||||
|
},
|
||||||
|
|
||||||
applyDeptSelected(value) {
|
applyDeptSelected(value) {
|
||||||
if (value.length === 0) {
|
if (value.length === 0) {
|
||||||
this.processForm['applyDept'] = null
|
this.processForm['applyDept'] = null
|
||||||
|
@ -634,9 +710,8 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.selectedDepts = leveled.map(level => level.id)
|
// applyDeptId 提交时处理
|
||||||
this.processForm['applyDept'] = leveled.map(level => level.name).join(',') // (逗号分割)
|
this.processForm['applyDept'] = leveled.map(level => level.name).join(',') // (逗号分割)
|
||||||
this.processForm['applyDeptId'] = leveled.map(level => level.id).join(',') // (逗号分割)
|
|
||||||
this.processForm['applyDeptLeaderId'] = selected.leaderId
|
this.processForm['applyDeptLeaderId'] = selected.leaderId
|
||||||
this.processForm['applyDeptLeaderName'] = selected.leaderName
|
this.processForm['applyDeptLeaderName'] = selected.leaderName
|
||||||
},
|
},
|
||||||
|
@ -660,6 +735,9 @@
|
||||||
isProcurementContractMode() {
|
isProcurementContractMode() {
|
||||||
return this.mode === newBusinessProcurementContractProcess
|
return this.mode === newBusinessProcurementContractProcess
|
||||||
},
|
},
|
||||||
|
isProcurementContractDetailMode() {
|
||||||
|
return this.mode === procurementContractDetail
|
||||||
|
},
|
||||||
isSalesContractMode() {
|
isSalesContractMode() {
|
||||||
return this.mode === saleContractProcess
|
return this.mode === saleContractProcess
|
||||||
},
|
},
|
||||||
|
@ -669,7 +747,7 @@
|
||||||
subTitle() {
|
subTitle() {
|
||||||
switch (this.mode) {
|
switch (this.mode) {
|
||||||
case BUTTON:
|
case BUTTON:
|
||||||
return "新增流程"
|
return "编辑流程"
|
||||||
case saleContractProcess:
|
case saleContractProcess:
|
||||||
return "编辑销售合同流程"
|
return "编辑销售合同流程"
|
||||||
case saleContractDetail:
|
case saleContractDetail:
|
||||||
|
|
|
@ -401,7 +401,7 @@
|
||||||
|
|
||||||
<#-- 选择 业务采购清单明细 -->
|
<#-- 选择 业务采购清单明细 -->
|
||||||
|
|
||||||
<div v-cloak class="am-u-sm-12 am-u-md-12" v-if="isProcurementContractDetailMode">
|
<div class="am-u-sm-12 am-u-md-12" v-if="isProcurementContractDetailMode">
|
||||||
<el-table style="width: 100%" border>
|
<el-table style="width: 100%" border>
|
||||||
|
|
||||||
<el-table-column prop="fee" label="费用项目" width="180"></el-table-column>
|
<el-table-column prop="fee" label="费用项目" width="180"></el-table-column>
|
||||||
|
@ -431,6 +431,12 @@
|
||||||
<el-table-column prop="fee" label="含税总金额(元)"></el-table-column>
|
<el-table-column prop="fee" label="含税总金额(元)"></el-table-column>
|
||||||
|
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
|
<el-row style="margin: 20px 0">
|
||||||
|
<el-button type="info" @click="goToProcurementContract">返回上一级</el-button>
|
||||||
|
<el-button type="primary" @click="goToProcurementContract">保存并返回上一级</el-button>
|
||||||
|
</el-row>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
@ -493,19 +499,46 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
goToHome() {
|
goToHome() {
|
||||||
this.changeMode(BUTTON)
|
// 判断是否已填写了
|
||||||
|
if (Object.keys(this.processForm).length > 1) {
|
||||||
|
this.$confirm('您确认要返回上一级吗 返回后填写的表单将重置', '返回上一级', {
|
||||||
|
confirmButtonText: '确定',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
type: 'warning'
|
||||||
|
}).then(() => {
|
||||||
|
this.projectSelected = false
|
||||||
|
this.initForm({})
|
||||||
|
this.changeMode(BUTTON)
|
||||||
|
}).catch(() => {
|
||||||
|
this.$message({
|
||||||
|
type: 'info',
|
||||||
|
message: '已取消'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.changeMode(BUTTON)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
goToSaleContractProcess() {
|
goToSaleContractProcess() {
|
||||||
this.changeMode(saleContractProcess)
|
this.changeMode(saleContractProcess)
|
||||||
this.processType = 'sale_contract'
|
this.processType = 'sale_contract'
|
||||||
},
|
},
|
||||||
|
goToProcurementContract() {
|
||||||
|
this.changeMode(saleContractProcess)
|
||||||
|
},
|
||||||
|
|
||||||
goToContractDetail() {
|
goToContractDetail() {
|
||||||
// TODO 分情况展示
|
|
||||||
const { projectId } = this.processForm
|
const { projectId } = this.processForm
|
||||||
if (projectId) {
|
if (projectId) {
|
||||||
this.changeMode(saleContractDetail)
|
// 选择了才能编辑详情
|
||||||
|
if (this.isSalesContractMode) {
|
||||||
|
this.changeMode(saleContractDetail)
|
||||||
|
}
|
||||||
|
else if (this.isProcurementContractMode) {
|
||||||
|
this.changeMode(procurementContractDetail)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.$message.warning("项目还未选择")
|
this.$message.warning("项目还未选择")
|
||||||
|
@ -623,7 +656,15 @@
|
||||||
if (procurementMode === 'price_comparison'
|
if (procurementMode === 'price_comparison'
|
||||||
|| procurementMode === 'competitive_evaluation') {
|
|| procurementMode === 'competitive_evaluation') {
|
||||||
|
|
||||||
|
if (isEmpty(this.supplierMaterialsForm)) {
|
||||||
|
this.$message.error("供应商比选材料未填写")
|
||||||
|
return false
|
||||||
|
}
|
||||||
for (const item in this.supplierMaterialsForm) {
|
for (const item in this.supplierMaterialsForm) {
|
||||||
|
if (isEmpty(Object.keys(item))) {
|
||||||
|
this.$message.error("供应商比选材料未填写")
|
||||||
|
return false
|
||||||
|
}
|
||||||
for (const [key, value] of Object.entries(item)) {
|
for (const [key, value] of Object.entries(item)) {
|
||||||
if (value) {
|
if (value) {
|
||||||
if (typeof value === 'string') {
|
if (typeof value === 'string') {
|
||||||
|
|
Loading…
Reference in New Issue