修改合并

master
linyongLynn 2 months ago
commit 8f38ae4680

@ -467,6 +467,7 @@
:rules="rules" :rules="rules"
title="编辑" title="编辑"
type="form" type="form"
@submit="editorTable"
> >
<template v-slot:name> <template v-slot:name>
<div class="xy-table-item"> <div class="xy-table-item">
@ -654,9 +655,9 @@
</div> </div>
</div> </div>
</template> </template>
<template v-slot:footerContent> // <template v-slot:footerContent>
<Button type="primary" @click="editorTable"></Button> // <Button type="primary" @click="editorTable"></Button>
</template> // </template>
</xy-dialog> </xy-dialog>
</div> </div>
</template> </template>
@ -673,8 +674,8 @@ import { listdeptNoAuth } from '@/api/system/department'
import { Message } from 'element-ui' import { Message } from 'element-ui'
import { parseTime, moneyFormatter, moneyRecovery } from '@/utils' import { parseTime, moneyFormatter, moneyRecovery } from '@/utils'
import { getparameter } from '@/api/system/dictionary' import { getparameter } from '@/api/system/dictionary'
import { import {
index as getPlanType index as getPlanType
} from '@/api/budget/plantype.js' } from '@/api/budget/plantype.js'
import { mergeTableRow } from '@/utils/mergeTableRow' import { mergeTableRow } from '@/utils/mergeTableRow'
import { import {
@ -1078,13 +1079,13 @@ export default {
department_id: item department_id: item
}) })
}) })
console.log(this.form)
addBudget({ addBudget({
name: this.form.name, name: this.form.name,
type: this.form.type, type: this.form.type,
year: this.form.year, year: this.form.year,
content: this.form.content, content: this.form.content,
money: moneyRecovery(this.form.money), money:this.form.money? moneyRecovery(this.form.money):'',
plan_department_id: this.form.department, plan_department_id: this.form.department,
plan_department_links: plan_department_links, plan_department_links: plan_department_links,
remark: this.form.remark, remark: this.form.remark,
@ -1115,9 +1116,10 @@ export default {
// //
editorTable() { editorTable() {
this.$refs['editorDialog'].$refs['elForm'] console.log(this.editorForm)
.validate() // this.$refs['editorDialog'].$refs['elForm']
.then((res) => { // .validate()
// .then((res) => {
if (this.editorForm.plan_department_link_id.length == 0) { if (this.editorForm.plan_department_link_id.length == 0) {
Message({ Message({
message: '请选择可用部门', message: '请选择可用部门',
@ -1137,8 +1139,8 @@ export default {
type: this.editorForm.type, type: this.editorForm.type,
year: this.editorForm.year, year: this.editorForm.year,
content: this.editorForm.content, content: this.editorForm.content,
money: moneyRecovery(this.editorForm.money), money: this.editorForm.money? moneyRecovery(this.editorForm.money):'',
update_money: moneyRecovery(this.editorForm.update_money), update_money: this.editorForm.update_money? moneyRecovery(this.editorForm.update_money):'',
remark: this.editorForm.remark, remark: this.editorForm.remark,
plan_department_id: this.editorForm.department, plan_department_id: this.editorForm.department,
plan_department_links: plan_department_links plan_department_links: plan_department_links
@ -1150,13 +1152,13 @@ export default {
}) })
this.getBudgets() this.getBudgets()
}) })
}) // })
.catch((err) => { // .catch((err) => {
this.$message({ // this.$message({
message: '请填写完整信息', // message: '',
type: 'error' // type: 'error'
}) // })
}) // })
}, },
showEditor(row) { showEditor(row) {
this.checkArr = [] this.checkArr = []
@ -1217,7 +1219,7 @@ export default {
z-index: 2; z-index: 2;
} }
} }
::v-deep .el-checkbox__input .el-checkbox__inner { ::v-deep .el-checkbox__input .el-checkbox__inner {
border-radius: 50%; border-radius: 50%;
} }
</style> </style>

@ -147,7 +147,7 @@ export default {
table: [{ table: [{
label: '隶属项目', label: '隶属项目',
prop: 'pid_info_name', prop: 'pid_info_name',
width: 200, width: 120,
align: 'left', align: 'left',
sortable: false, sortable: false,
fixed: 'left' fixed: 'left'
@ -155,7 +155,7 @@ export default {
{ {
label: '项目名称', label: '项目名称',
prop: 'name', prop: 'name',
width: 200, width: 260,
align: 'left', align: 'left',
sortable: false, sortable: false,
fixed: 'left' fixed: 'left'

@ -136,123 +136,124 @@
style="width: 300px;" /> style="width: 300px;" />
</div> </div>
</div> </div>
</template> </template>
<template v-if="contract.is_contract===1" v-slot:other_tender_name> <template v-if="contract.is_contract===1" v-slot:other_tender_name>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>其他参与投标单位名称 <span style="color: red;font-weight: 600;padding-right: 4px;"></span>其他参与投标单位名称
</div> </div>
<div class="xy-table-item-content "> <div class="xy-table-item-content ">
<el-button type="primary" style="margin-bottom:10px" size="small" @click="addRow"></el-button> <el-button type="primary" style="margin-bottom:10px" size="small" @click="addRow"></el-button>
<div class="other_tender_name_input" v-for="(item,index) in form.other_tender_name"> <div class="other_tender_name_input" v-for="(item,index) in form.other_tender_name">
<el-input placeholder="请输入" style="width:200px;margin-right:10px" v-model="form.other_tender_name[index]"></el-input> <el-input placeholder="请输入" style="width:200px;margin-right:10px" v-model="form.other_tender_name[index]"></el-input>
<!-- <el-popconfirm confirm-button-text="" cancel-button-text="" style="margin:0 10px" <!-- <el-popconfirm confirm-button-text="" cancel-button-text="" style="margin:0 10px"
@confirm="delRow(index)" title="确认删除该条?"> @confirm="delRow(index)" title="确认删除该条?">
<el-button type="danger" size="small" slot="reference">删除</el-button> <el-button type="danger" size="small" slot="reference">删除</el-button>
</el-popconfirm> --> </el-popconfirm> -->
<Poptip confirm <Poptip confirm
title="确认删除该条?" title="确认删除该条?"
@on-ok="delRow(index)"> @on-ok="delRow(index)">
<Button type="error">删除</Button> <Button type="error">删除</Button>
</Poptip> </Poptip>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<template v-if="contract.is_contract===1" v-slot:quotation_situation> <template v-if="contract.is_contract===1" v-slot:quotation_situation>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>事前询价情况 <span style="color: red;font-weight: 600;padding-right: 4px;"></span>事前询价情况
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-select v-model="form.quotation_situation" placeholder="请选择" style="width:300px"> <el-select v-model="form.quotation_situation" placeholder="请选择" style="width:300px">
<el-option <el-option
v-for="(item,index) in ['第三方造价咨询单位出具的报告或标底','供应商提供的报价']" v-for="(item,index) in ['第三方造价咨询单位出具的报告或标底','供应商提供的报价']"
:key="index" :key="index"
:label="item" :label="item"
:value="item"> :value="item">
</el-option> </el-option>
</el-select> </el-select>
<!-- <el-input v-model="form.quotation_situation" type="textarea" placeholder="第三方造价咨询单位出具的报告或标底/供应商提供的报价" <!-- <el-input v-model="form.quotation_situation" type="textarea" placeholder="第三方造价咨询单位出具的报告或标底/供应商提供的报价"
style="width: 300px;" /> --> style="width: 300px;" /> -->
</div> </div>
</div> </div>
</template> </template>
<template v-if="contract.is_contract===1" v-slot:audit_situation> <template v-if="contract.is_contract===1" v-slot:audit_situation>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>事后审计情况 <span style="color: red;font-weight: 600;padding-right: 4px;"></span>事后审计情况
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-select v-model="form.audit_situation" placeholder="请选择" style="width:300px"> <el-select v-model="form.audit_situation" placeholder="请选择" style="width:300px">
<el-option <el-option
v-for="(item,index) in ['外部财政局或审计局审计','内部自行委托的第三方审计','未审计']" v-for="(item,index) in ['外部财政局或审计局审计','内部自行委托的第三方审计','未审计']"
:key="index" :key="index"
:label="item" :label="item"
:value="item"> :value="item">
</el-option> </el-option>
</el-select> </el-select>
<!-- <el-input v-model="form.audit_situation" type="textarea" placeholder="外部财政局或审计局审计/内部自行委托的第三方审计/未审计。" <!-- <el-input v-model="form.audit_situation" type="textarea" placeholder="外部财政局或审计局审计/内部自行委托的第三方审计/未审计。"
style="width: 300px;" /> --> style="width: 300px;" /> -->
</div> </div>
</div> </div>
</template> </template>
<template v-if="contract.is_contract===1" v-slot:payment_content> <template v-if="contract.is_contract===1" v-slot:payment_content>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;"></span>合同内的支付条款 <span style="color: red;font-weight: 600;padding-right: 4px;"></span>合同内的支付条款
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-input v-model="form.payment_content" type="textarea" placeholder="合同内的支付条款" <el-input v-model="form.payment_content" type="textarea" placeholder="合同内的支付条款"
style="width: 300px;" /> style="width: 300px;" />
</div> </div>
</div> </div>
</template> </template>
<template v-if="contract.is_end===1" v-slot:project_end_time> <template v-if="contract.is_end===1" v-slot:project_end_time>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>项目完成竣工时间 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>项目完成竣工时间
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-date-picker v-model="form.project_end_time" style="width: 300px;" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" /> <el-date-picker v-model="form.project_end_time" style="width: 300px;" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" />
</div> </div>
</div> </div>
</template> </template>
<template v-if="contract.is_end===1" v-slot:is_acceptance> <template v-if="contract.is_end===1" v-slot:is_acceptance>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>是否验收 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>是否验收
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-select v-model="form.is_acceptance" placeholder="请选择" style="width:300px"> <el-select v-model="form.is_acceptance" placeholder="请选择" style="width:300px">
<el-option <el-option
v-for="item in [{id:0,value:'否'},{id:1,value:'是'}]" v-for="item in [{id:0,value:'否'},{id:1,value:'是'}]"
:key="item.id" :key="item.id"
:label="item.value" :label="item.value"
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
</div> </div>
</template> </template>
<template v-if="contract.is_end===1" v-slot:change_visa_amount> <template v-if="contract.is_end===1" v-slot:change_visa_amount>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>变更签证(增加内容的补充合同)金额 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>变更签证(增加内容的补充合同)金额
</div> </div>
<div class="xy-table-item-content xy-table-item-price"> <div class="xy-table-item-content xy-table-item-price">
<!-- <el-input-number v-model="form.change_visa_amount" :controls="false" placeholder="请填写变更签证(增加内容的补充合同)金额" <!-- <el-input-number v-model="form.change_visa_amount" :controls="false" placeholder="请填写变更签证(增加内容的补充合同)金额"
style="width: 300px;" /> --> style="width: 300px;" /> -->
<el-input-number v-model="form.change_visa_amount" :precision="2" :controls="false" placeholder="请填写变更签证(增加内容的补充合同)金额" <!-- <el-input-number v-model="form.change_visa_amount" :precision="2" :controls="false" placeholder="请填写变更签证(增加内容的补充合同)金额"
style="width: 300px;" /> style="width: 300px;" /> -->
</div> <el-input type="number" v-model="form.change_visa_amount" placeholder="请填写变更签证(增加内容的补充合同)金额" style="width: 300px;" />
</div> </div>
</template> </div>
</template>
<template v-if="contract.contract_type !== 160" v-slot:extraFormBottom> <template v-if="contract.contract_type !== 160" v-slot:extraFormBottom>
<div class="base-info add-plan" style="margin-top: 20px;margin-bottom: 20px"> <div class="base-info add-plan" style="margin-top: 20px;margin-bottom: 20px">
@ -462,14 +463,14 @@
date: '', date: '',
is_assurance: false, is_assurance: false,
assurance_money: '', assurance_money: '',
assurance_expire: '', assurance_expire: '',
other_tender_name:[], other_tender_name:[],
quotation_situation:'', quotation_situation:'',
audit_situation:'', audit_situation:'',
payment_content:'', payment_content:'',
project_end_time:'', project_end_time:'',
is_acceptance:'', is_acceptance:'',
change_visa_amount:0, change_visa_amount:'',
}, },
rules: { rules: {
@ -503,23 +504,23 @@
message: '必选' message: '必选'
}], }],
guaranteeMoney: [], guaranteeMoney: [],
guaranteeYear: [], guaranteeYear: [],
// other_tender_name: [{ // other_tender_name: [{
// required: true, // required: true,
// message: '' // message: ''
// }], // }],
// quotation_situation: [{ // quotation_situation: [{
// required: true, // required: true,
// message: '' // message: ''
// }], // }],
// audit_situation: [{ // audit_situation: [{
// required: true, // required: true,
// message: '' // message: ''
// }], // }],
// payment_content: [{ // payment_content: [{
// required: true, // required: true,
// message: '' // message: ''
// }], // }],
}, },
@ -607,12 +608,12 @@
this.planMonthLists() this.planMonthLists()
}, },
// //
addRow() { addRow() {
this.form.other_tender_name.push('') this.form.other_tender_name.push('')
}, },
delRow(obj, index) { delRow(obj, index) {
this.form.other_tender_name.splice(index, 1); this.form.other_tender_name.splice(index, 1);
}, },
// //
sign() { sign() {
@ -634,53 +635,53 @@
}) })
return return
} }
console.log("other",this.form.other_tender_name) console.log("other",this.form.other_tender_name)
if(this.contract.is_contract===1){ if(this.contract.is_contract===1){
// if(this.form.other_tender_name.length<1){ // if(this.form.other_tender_name.length<1){
// this.$Message.warning(``) // this.$Message.warning(``)
// return // return
// } // }
// if(!this.form.quotation_situation){ // if(!this.form.quotation_situation){
// this.$Message.warning(``) // this.$Message.warning(``)
// return // return
// } // }
// if(!this.form.audit_situation){ // if(!this.form.audit_situation){
// this.$Message.warning(``) // this.$Message.warning(``)
// return // return
// } // }
// if(!this.form.payment_content){ // if(!this.form.payment_content){
// this.$Message.warning(``) // this.$Message.warning(``)
// return // return
// } // }
// if (this.form.other_tender_name.length > 0) { // if (this.form.other_tender_name.length > 0) {
// // // //
// for (var p of this.form.other_tender_name) { // for (var p of this.form.other_tender_name) {
// if (!p) { // if (!p) {
// this.$Message.warning(``) // this.$Message.warning(``)
// return // return
// } // }
// } // }
// } // }
} }
if(this.contract.is_end===1){ if(this.contract.is_end===1){
if(!this.form.project_end_time){ if(!this.form.project_end_time){
this.$Message.warning(`项目完成(竣工)时间不能为空`) this.$Message.warning(`项目完成(竣工)时间不能为空`)
return return
} }
if(!this.form.is_acceptance){ if(this.form.is_acceptance === null || this.form.is_acceptance === undefined || this.form.is_acceptance === ''){
this.$Message.warning(`请选择是否验收`) this.$Message.warning(`请选择是否验收`)
return return
} }
if (this.form.change_visa_amount === null || this.form.change_visa_amount === undefined || if (this.form.change_visa_amount === null || this.form.change_visa_amount === undefined ||
this.form.change_visa_amount === '') { this.form.change_visa_amount === '') {
// //
this.$Message.warning(`请填写变更签证(增加内容的补充合同)金额`) this.$Message.warning(`请填写变更签证(增加内容的补充合同)金额`)
return return
} }
} }
// return // return
editorContract({ editorContract({
id: this.contractId, id: this.contractId,
@ -697,13 +698,13 @@
date: this.form.date, date: this.form.date,
is_assurance: this.form.is_assurance, is_assurance: this.form.is_assurance,
assurance_money: this.form.assurance_money, assurance_money: this.form.assurance_money,
assurance_expire: this.form.assurance_expire, assurance_expire: this.form.assurance_expire,
other_tender_name:this.form.other_tender_name, other_tender_name:this.form.other_tender_name,
project_end_time:this.form.project_end_time, project_end_time:this.form.project_end_time,
is_acceptance:this.form.is_acceptance, is_acceptance:this.form.is_acceptance,
quotation_situation:this.form.quotation_situation, quotation_situation:this.form.quotation_situation,
audit_situation:this.form.audit_situation, audit_situation:this.form.audit_situation,
change_visa_amount:this.form.change_visa_amount, change_visa_amount:this.form.change_visa_amount,
payment_content:this.form.payment_content payment_content:this.form.payment_content
}).then(res => { }).then(res => {
this.isShow = false this.isShow = false
@ -711,7 +712,7 @@
type: 'success', type: 'success',
message: '操作成功' message: '操作成功'
}) })
this.$emit('signSuccess') this.$emit('signSuccess')
this.handleOperationSuccess() this.handleOperationSuccess()
}) })
}, },
@ -757,7 +758,7 @@
this.form.guaranteeYear = res.guarantee_year this.form.guaranteeYear = res.guarantee_year
this.form.is_assurance = res.is_assurance === 1 this.form.is_assurance = res.is_assurance === 1
this.form.assurance_expire = res.assurance_expire this.form.assurance_expire = res.assurance_expire
this.form.assurance_money = res.assurance_money this.form.assurance_money = res.assurance_money
this.form.other_tender_name = res.other_tender_name?res.other_tender_name:[] this.form.other_tender_name = res.other_tender_name?res.other_tender_name:[]
// //
if (res.contract_type !== 160) { if (res.contract_type !== 160) {
@ -980,10 +981,10 @@
::v-deep .el-input__inner { ::v-deep .el-input__inner {
text-align: left; text-align: left;
}
::v-deep .other_tender_name_input{
display: flex;
align-items: center;
margin-bottom:5px
} }
</style> ::v-deep .other_tender_name_input{
display: flex;
align-items: center;
margin-bottom:5px
}
</style>

@ -253,8 +253,9 @@
签订合同 签订合同
</Button> </Button>
</template> </template>
<!-- (scope.row.purchase_way ? scope.row.purchase_way.remark === 'true' : false) --> <!-- (scope.row.purchase_way ? scope.row.purchase_way.remark === 'true' : false) && -->
<template <template
v-if="scope.row.invite_status === 1 && scope.row.purchase_status === 3 && !scope.row.is_substitute && (!scope.row.contract_category || scope.row.invite_status === 1)" v-if="scope.row.invite_status === 1 && scope.row.purchase_status === 3 && !scope.row.is_substitute && (!scope.row.contract_category || scope.row.invite_status === 1)"
> >
<Button class="slot-btns-item" size="small" type="primary" @click="bidding(scope.row)"></Button> <Button class="slot-btns-item" size="small" type="primary" @click="bidding(scope.row)"></Button>
@ -265,6 +266,7 @@
</Button> </Button>
</template> </template>
<!--不需要走采购流程那么直接就是会签如果采购方式不需要招标的也是直接会签--> <!--不需要走采购流程那么直接就是会签如果采购方式不需要招标的也是直接会签-->
<!-- (scope.row.purchase_way ? scope.row.purchase_way.remark === 'false' : false) -->
<template <template
v-if="(scope.row.has_charge && scope.row.req_status === 3 && scope.row.join_status === 1) || (scope.row.join_status === 1 && ((scope.row.invite_status === 3)||(scope.row.purchase_status === 3)) || ( scope.row.is_substitute && scope.row.join_status === 1) ) && (!scope.row.contract_category || scope.row.join_status === 1)" v-if="(scope.row.has_charge && scope.row.req_status === 3 && scope.row.join_status === 1) || (scope.row.join_status === 1 && ((scope.row.invite_status === 3)||(scope.row.purchase_status === 3)) || ( scope.row.is_substitute && scope.row.join_status === 1) ) && (!scope.row.contract_category || scope.row.join_status === 1)"
> >
@ -486,7 +488,7 @@
</el-form-item> </el-form-item>
<!-- 新增承包商/供应商输入框 --> <!-- 新增承包商/供应商输入框 -->
<el-form-item <!-- <el-form-item
v-show="true" v-show="true"
:label="formType === 'contract' ? '承包商/供应商' : '付款对象'" :label="formType === 'contract' ? '承包商/供应商' : '付款对象'"
prop="supply" prop="supply"
@ -496,6 +498,19 @@
v-model="form.supply" v-model="form.supply"
:placeholder="formType === 'contract' ? '请输入承包商/供应商' : '请输入付款对象'" :placeholder="formType === 'contract' ? '请输入承包商/供应商' : '请输入付款对象'"
/> />
</el-form-item> -->
<el-form-item
v-show="formType != 'contract'"
:label="'付款对象'"
prop="supply"
:rules="[{ required: true, message: '请输入付款对象', trigger: 'submit' }]"
>
<el-input
v-model="form.supply"
:placeholder="'请输入付款对象'"
/>
</el-form-item> </el-form-item>
<!-- 新增执行科室选择 --> <!-- 新增执行科室选择 -->
@ -1042,7 +1057,7 @@ export default {
label: '合同分类', label: '合同分类',
width: 120, width: 120,
prop: 'contract_category.category', prop: 'contract_category.category',
fixed: 'left', // fixed: 'left',
align: 'center', align: 'center',
formatter: (row) => this.categoryIdNameMap?.[row.contract_category?.category] || '' formatter: (row) => this.categoryIdNameMap?.[row.contract_category?.category] || ''
}, },
@ -1050,7 +1065,7 @@ export default {
label: '事务类型', label: '事务类型',
width: 120, width: 120,
prop: 'contract_category.work_type', prop: 'contract_category.work_type',
fixed: 'left', // fixed: 'left',
align: 'center', align: 'center',
formatter: (row) => this.categoryIdNameMap?.[row.contract_category?.work_type] || '' formatter: (row) => this.categoryIdNameMap?.[row.contract_category?.work_type] || ''
}, },
@ -1058,15 +1073,15 @@ export default {
label: '合同类型', label: '合同类型',
width: 120, width: 120,
prop: 'contract_category.contract_type', prop: 'contract_category.contract_type',
fixed: 'left', // fixed: 'left',
align: 'center', align: 'center',
formatter: (row) => this.categoryIdNameMap?.[row.contract_category?.contract_type] || '-' formatter: (row) => this.categoryIdNameMap?.[row.contract_category?.contract_type] || '-'
},{ },{
label: '项目名称', label: '项目名称',
width: 120, width: 240,
prop: 'name', prop: 'name',
fixed: 'left', fixed: 'left',
align: 'center' align: 'left'
}, },
{ {
label: '采购形式', label: '采购形式',
@ -2251,7 +2266,7 @@ export default {
plan: '关联预算计划', plan: '关联预算计划',
supply: '付款对象' supply: '付款对象'
} }
const missingFieldNames = missingFields.map(field => fieldNames[field] || field).join('、') const missingFieldNames = missingFields.map(field => fieldNames[field] || field).join('、')
this.$Message.warning(`请填写:${missingFieldNames}`) this.$Message.warning(`请填写:${missingFieldNames}`)
return return

@ -8,13 +8,13 @@
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
付款计划日期 付款计划日期
</span> </span>
<DatePicker <DatePicker
:value="[select.start,select.end]" :value="[select.start,select.end]"
placeholder="请选择日期" placeholder="请选择日期"
placement="bottom-start" placement="bottom-start"
style="width: 200px" style="width: 200px"
type="daterange" type="daterange"
@on-change="datePick" @on-change="datePick"
/> />
</div> </div>
@ -25,10 +25,10 @@
<Input v-model="select.keyword" placeholder="请输入关键字" style="width: 180px" /> <Input v-model="select.keyword" placeholder="请输入关键字" style="width: 180px" />
</div> </div>
<Button <Button
style="margin-left: 10px" style="margin-left: 10px"
type="primary" type="primary"
@click="select={showDate:'',start:'',end:'',pageIndex:1,keyword:''}" @click="select={showDate:'',start:'',end:'',pageIndex:1,keyword:''}"
>重置 >重置
</Button> </Button>
<Button style="margin-left: 10px" type="primary" @click="getSignPlan"></Button> <Button style="margin-left: 10px" type="primary" @click="getSignPlan"></Button>
@ -36,11 +36,11 @@
</slot> </slot>
</lx-header> </lx-header>
<xy-table <xy-table
:list="list" :list="list"
:table-item="table" :table-item="table"
@delete="deleteContractSign" @delete="deleteContractSign"
@editor="(row)=>{$refs['detailContractSign'].planId = row.id;$refs['detailContractSign'].isShow = true}" @editor="(row)=>{$refs['detailContractSign'].planId = row.id;$refs['detailContractSign'].isShow = true}"
> >
<template v-if="type==0" v-slot:btns /> <template v-if="type==0" v-slot:btns />
</xy-table> </xy-table>
@ -85,7 +85,7 @@ export default {
table: [{ table: [{
prop: 'contract.name', prop: 'contract.name',
label: '项目名称', label: '项目名称',
width: 170, width: 240,
align: 'left', align: 'left',
fixed: 'left' fixed: 'left'
}, },

@ -21,99 +21,99 @@
<span style="padding: 0 6px;word-break: keep-all;">预算计划</span> <span style="padding: 0 6px;word-break: keep-all;">预算计划</span>
<span> <span>
<Input <Input
v-model="select.plan_name" v-model="select.plan_name"
clearable clearable
placeholder="请选择预算计划" placeholder="请选择预算计划"
style="width: 200px" style="width: 200px"
@on-focus="showPlanForSearch" @on-focus="showPlanForSearch"
@on-clear="clearSelectForSearch" @on-clear="clearSelectForSearch"
/> />
</span> </span>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;">签订年份</span> <span style="padding: 0 6px;word-break: keep-all;">签订年份</span>
<span> <span>
<DatePicker <DatePicker
:value="select.year" :value="select.year"
placeholder="选择年份" placeholder="选择年份"
placement="bottom" placement="bottom"
style="width: 90px;" style="width: 90px;"
type="year" type="year"
@on-change="(e)=>select.year = e" @on-change="(e)=>select.year = e"
/> />
</span> </span>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
预算金额 预算金额
</span> </span>
<InputNumber v-model="select.start_plan_price" :min="0" placeholder="最小金额" style="width: 100px;" /> <InputNumber v-model="select.start_plan_price" :min="0" placeholder="最小金额" style="width: 100px;" />
<span style="padding: 0 5px;">-</span> <span style="padding: 0 5px;">-</span>
<InputNumber v-model="select.end_plan_price" :min="0" placeholder="最大金额" style="width: 100px;" /> <InputNumber v-model="select.end_plan_price" :min="0" placeholder="最大金额" style="width: 100px;" />
</div> </div>
<!-- 更多按钮 --> <!-- 更多按钮 -->
<div> <div>
<Button type="text" @click="showMoreSearch = !showMoreSearch"> <Button type="text" @click="showMoreSearch = !showMoreSearch">
{{ showMoreSearch ? '收起' : '更多' }} {{ showMoreSearch ? '收起' : '更多' }}
</Button> </Button>
</div> </div>
<!-- 其余搜索项v-if="showMoreSearch" --> <!-- 其余搜索项v-if="showMoreSearch" -->
<template v-if="showMoreSearch"> <template v-if="showMoreSearch">
<div> <div>
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
合同分类 合同分类
</span> </span>
<Select v-model="select.contract_category" disabled placeholder="请选择合同分类" style="width:140px;" @on-change="handleCategoryChange"> <Select v-model="select.contract_category" disabled placeholder="请选择合同分类" style="width:140px;" @on-change="handleCategoryChange">
<Option v-for="item in categoryOptions" :key="item.id" :value="item.id">{{ item.value || item.name }}</Option> <Option v-for="item in categoryOptions" :key="item.id" :value="item.id">{{ item.value || item.name }}</Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
事务类型 事务类型
</span> </span>
<Select v-model="select.work_type" multiple clearable placeholder="请选择事务类型" style="width:180px;" :max-tag-count="1" @on-change="handleTransactionTypeChange"> <Select v-model="select.work_type" multiple clearable placeholder="请选择事务类型" style="width:180px;" :max-tag-count="1" @on-change="handleTransactionTypeChange">
<Option v-for="item in transactionTypes" :key="item.id" :value="item.id">{{ item.value || item.name }}</Option> <Option v-for="item in transactionTypes" :key="item.id" :value="item.id">{{ item.value || item.name }}</Option>
</Select> </Select>
</div> </div>
<div> <div>
<span style="padding: 0 6px;word-break: keep-all;"> <span style="padding: 0 6px;word-break: keep-all;">
合同类型 合同类型
</span> </span>
<Select v-model="select.contract_type" multiple clearable placeholder="请选择合同类型" style="width:160px;" :max-tag-count="1" @on-change="handleContractTypeChange"> <Select v-model="select.contract_type" multiple clearable placeholder="请选择合同类型" style="width:160px;" :max-tag-count="1" @on-change="handleContractTypeChange">
<Option v-for="item in contractTypes" :key="item.id" :value="item.id">{{ item.value || item.name }}</Option> <Option v-for="item in contractTypes" :key="item.id" :value="item.id">{{ item.value || item.name }}</Option>
</Select> </Select>
</div> </div>
<div v-if="type!=1"> <div v-if="type!=1">
<span style="padding: 0 6px;word-break: keep-all;">创建日期</span> <span style="padding: 0 6px;word-break: keep-all;">创建日期</span>
<span> <span>
<DatePicker <DatePicker
v-model="select.showDatePicker" v-model="select.showDatePicker"
clearable clearable
placeholder="请选择日期" placeholder="请选择日期"
placement="bottom-start" placement="bottom-start"
style="width: 200px" style="width: 200px"
type="daterange" type="daterange"
@on-change="datePick" @on-change="datePick"
/> />
</span> </span>
</div> </div>
<div v-if="type==1"> <div v-if="type==1">
<span style="padding: 0 6px;word-break: keep-all;">保函有效期</span> <span style="padding: 0 6px;word-break: keep-all;">保函有效期</span>
<span> <span>
<DatePicker <DatePicker
v-model="select.showDatePickerBao" v-model="select.showDatePickerBao"
clearable clearable
placeholder="请选择日期" placeholder="请选择日期"
placement="bottom-start" placement="bottom-start"
style="width: 200px" style="width: 200px"
type="daterange" type="daterange"
@on-change="datePickBao" @on-change="datePickBao"
/> />
</span> </span>
</div> </div>
@ -169,10 +169,10 @@
合同状态 合同状态
</span> </span>
<Select v-model="select.status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.status" clearable placeholder="请选择" style="width:100px;">
<Option <Option
v-for="item in [{label:'待签订',value:1},{label:'已签订',value:2}]" v-for="item in [{label:'待签订',value:1},{label:'已签订',value:2}]"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }} >{{ item.label }}
</Option> </Option>
</Select> </Select>
@ -183,10 +183,10 @@
履约保函状态 履约保函状态
</span> </span>
<Select v-model="select.assurance_status" clearable placeholder="请选择" style="width:100px;"> <Select v-model="select.assurance_status" clearable placeholder="请选择" style="width:100px;">
<Option <Option
v-for="item in [{label:'未收取',value:0},{label:'已收取',value:1}]" v-for="item in [{label:'未收取',value:0},{label:'已收取',value:1}]"
:key="item.value" :key="item.value"
:value="item.value" :value="item.value"
>{{ item.label }} >{{ item.label }}
</Option> </Option>
</Select> </Select>
@ -229,15 +229,15 @@
<Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }} <Option v-for="item in options" :key="item.value" :value="item.value">{{ item.label }}
</Option> </Option>
</Select> </Select>
</div> </div>
</template> </template>
<Button style="margin-left: 10px" type="primary" @click="searchContracts"></Button> <Button style="margin-left: 10px" type="primary" @click="searchContracts"></Button>
<Button <Button
ghost ghost
style="margin-left: 10px" style="margin-left: 10px"
type="primary" type="primary"
@click=" select = {showDatePicker:'',ageIndex:1,startDate:'',endDate:'',type:'',department:'',purchaseModality:'',purchaseMethods:'',priceMin:null,priceMax:null,status:''}" @click=" select = {showDatePicker:'',ageIndex:1,startDate:'',endDate:'',type:'',department:'',purchaseModality:'',purchaseMethods:'',priceMin:null,priceMax:null,status:''}"
> >
重置 重置
</Button> </Button>
@ -246,44 +246,44 @@
</slot> </slot>
</lx-header> </lx-header>
<xy-table <xy-table
ref="xyTable" ref="xyTable"
:cell-style="cellStyle" :cell-style="cellStyle"
:list="list" :list="list"
:show-summary="true" :show-summary="true"
:summary-method="summary" :summary-method="summary"
:table-item="type === 0 ? table : table1" :table-item="type === 0 ? table : table1"
@cellClick="showPaymentPlan" @cellClick="showPaymentPlan"
@delete="(row)=>deleteContract(row.id)" @delete="(row)=>deleteContract(row.id)"
@editor="" @editor=""
> >
<template v-slot:btns> <template v-slot:btns>
<el-table-column fixed="right" header-align="center" label="操作" width="200"> <el-table-column fixed="right" header-align="center" label="操作" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="slot-btns"> <div class="slot-btns">
<Button <Button
class="slot-btns-item" class="slot-btns-item"
size="small" size="small"
type="primary" type="primary"
@click="$refs['detailContract'].getDetail(scope.row.id),$refs['detailContract'].isShowDetail = true" @click="$refs['detailContract'].getDetail(scope.row.id),$refs['detailContract'].isShowDetail = true"
> >
查看 查看
</Button> </Button>
<Button <Button
v-if="scope.row.assurance_status==0&&type==1&&scope.row.is_assurance==1" v-if="scope.row.assurance_status==0&&type==1&&scope.row.is_assurance==1"
class="slot-btns-item" class="slot-btns-item"
size="small" size="small"
type="primary" type="primary"
@click="switchAssurance(scope.row.id,1)" @click="switchAssurance(scope.row.id,1)"
> >
确认登记 确认登记
</Button> </Button>
<Button <Button
v-if="scope.row.assurance_status==1&&type==1&&scope.row.is_assurance==1" v-if="scope.row.assurance_status==1&&type==1&&scope.row.is_assurance==1"
class="slot-btns-item" class="slot-btns-item"
size="small" size="small"
type="danger" type="danger"
@click="switchAssurance(scope.row.id,0)" @click="switchAssurance(scope.row.id,0)"
> >
取消登记 取消登记
</Button> </Button>
@ -298,14 +298,14 @@
</div> </div>
<!-- 新增合同 --> <!-- 新增合同 -->
<xy-dialog <xy-dialog
ref="addContract" ref="addContract"
:form="form" :form="form"
:is-show.sync="isShowAdd" :is-show.sync="isShowAdd"
:rules="rules" :rules="rules"
title="新增合同" title="新增合同"
type="form" type="form"
@submit="submit" @submit="submit"
> >
<template v-slot:name> <template v-slot:name>
<div class="xy-table-item"> <div class="xy-table-item">
@ -410,22 +410,22 @@
<xy-dialog :is-show.sync="isShowPlanForSearch" title="预算计划" :width="720" @on-ok="planSelectForSearch"> <xy-dialog :is-show.sync="isShowPlanForSearch" title="预算计划" :width="720" @on-ok="planSelectForSearch">
<template v-slot:normalContent> <template v-slot:normalContent>
<Input v-model="planSearch.name" search enter-button=" " placeholder="搜索预算计划.." @on-search="getBudgets" /> <Input v-model="planSearch.name" search enter-button=" " placeholder="搜索预算计划.." @on-search="getBudgets" />
<div <div
style="margin: 10px 0;display: flex;justify-content: space-between; style="margin: 10px 0;display: flex;justify-content: space-between;
align-items: center;" align-items: center;"
> >
<div>已选择<span style="margin-right:10px">{{ select.plan_name }}</span> </div> <div>已选择<span style="margin-right:10px">{{ select.plan_name }}</span> </div>
<el-link type="success" @click="clearSelectForSearch"></el-link> <el-link type="success" @click="clearSelectForSearch"></el-link>
</div> </div>
<xy-table <xy-table
ref="singlePlanTable" ref="singlePlanTable"
:list="plans" :list="plans"
:show-index="false" :show-index="false"
:table-item="planTableSearch" :table-item="planTableSearch"
:height="310" :height="310"
style="margin-top: 10px;" style="margin-top: 10px;"
@rowClick="selectPlanForSearch" @rowClick="selectPlanForSearch"
> >
<template v-slot:btns /> <template v-slot:btns />
</xy-table> </xy-table>
@ -445,25 +445,25 @@
<xy-dialog :is-show.sync="isShowPlan" :width="720" title="预算计划" @on-ok="planSelect"> <xy-dialog :is-show.sync="isShowPlan" :width="720" title="预算计划" @on-ok="planSelect">
<template v-slot:normalContent> <template v-slot:normalContent>
<div style="display: flex;"> <div style="display: flex;">
<el-select <el-select
v-model="planSearch.plan_department_id" v-model="planSearch.plan_department_id"
placeholder="科室选择" placeholder="科室选择"
clearable clearable
size="small" size="small"
style="width: 160px;" style="width: 160px;"
> >
<el-option v-for="item in departments" :key="item.id" :label="item.name" :value="item.id" /> <el-option v-for="item in departments" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
<Input v-model="planSearch.name" enter-button=" " placeholder="搜索预算计划.." search @on-search="getBudgets" /> <Input v-model="planSearch.name" enter-button=" " placeholder="搜索预算计划.." search @on-search="getBudgets" />
</div> </div>
<xy-table <xy-table
ref="planTable" ref="planTable"
:height="300" :height="300"
:list="plans" :list="plans"
:show-index="false" :show-index="false"
:table-item="planTable" :table-item="planTable"
style="margin-top: 10px;" style="margin-top: 10px;"
@select="selectPlan" @select="selectPlan"
> >
<template v-slot:btns> <template v-slot:btns>
<el-table-column header-align="center" label="使用金额" fixed="right" width="140"> <el-table-column header-align="center" label="使用金额" fixed="right" width="140">
@ -485,13 +485,13 @@
</xy-dialog> </xy-dialog>
<!-- 编辑--> <!-- 编辑-->
<editor <editor
ref="editor" ref="editor"
:is-show-editor.sync="isShowEditor" :is-show-editor.sync="isShowEditor"
:money-way="moneyWay" :money-way="moneyWay"
:purchase-type="purchaseType" :purchase-type="purchaseType"
:purchase-way="purchaseWay" :purchase-way="purchaseWay"
@success="getContracts" @success="getContracts"
/> />
<!-- 查看--> <!-- 查看-->
@ -565,7 +565,7 @@ export default {
} }
} }
return { return {
pageTitle: '合同列表', pageTitle: '合同列表',
showMoreSearch:false, showMoreSearch:false,
type: 0, // pageType _0 _1 type: 0, // pageType _0 _1
userList: ['liuxiangyu', 'zhushulan', 'admin', 'jiangjiao'], userList: ['liuxiangyu', 'zhushulan', 'admin', 'jiangjiao'],
@ -640,7 +640,7 @@ export default {
// //
table: [{ table: [{
label: '项目名称', label: '项目名称',
width: 340, width: 240,
prop: 'name', prop: 'name',
fixed: 'left', fixed: 'left',
align: 'left' align: 'left'
@ -654,7 +654,7 @@ export default {
label: '项目类型', label: '项目类型',
width: 120, width: 120,
prop: 'type', prop: 'type',
formatter: (cell, data, value) => { formatter: (cell, data, value) => {
switch (value) { switch (value) {
case 1: case 1:
return '服务' return '服务'
@ -779,7 +779,7 @@ export default {
item.value item.value
} </div>) } </div>)
}) })
} }
} }
}, },
{ {
@ -793,7 +793,7 @@ export default {
item.name item.name
} </div>) } </div>)
}) })
} }
} }
}, },
{ {
@ -903,8 +903,8 @@ export default {
width: 160, width: 160,
prop: 'date', prop: 'date',
formatter: (cell, data, value) => { formatter: (cell, data, value) => {
if (value) { if (value) {
return parseTime(new Date(value), '{y}-{m}-{d}') return parseTime(new Date(value), '{y}-{m}-{d}')
} }
} }
}, },
@ -1165,11 +1165,11 @@ export default {
methods: { methods: {
searchContracts() { searchContracts() {
this.select.pageIndex = 1 this.select.pageIndex = 1
this.getContracts() this.getContracts()
}, },
clearSelectForSearch() { clearSelectForSearch() {
this.select.plan_id = '' this.select.plan_id = ''
this.select.plan_name = '' this.select.plan_name = ''
}, },
async getPlanTypes() { async getPlanTypes() {
const res = await getparameter({ const res = await getparameter({
@ -1491,13 +1491,13 @@ export default {
number: 'purchase_type' number: 'purchase_type'
})).detail })).detail
}, },
pageSizeChange(e) { pageSizeChange(e) {
this.select.pageSize = e this.select.pageSize = e
this.select.pageIndex = 1 this.select.pageIndex = 1
this.getContracts() this.getContracts()
}, },
// //
async getContracts() { async getContracts() {
const res = await getContract({ const res = await getContract({
page_size: this.select.pageSize, page_size: this.select.pageSize,
page: this.select.pageIndex, page: this.select.pageIndex,
@ -1655,7 +1655,7 @@ export default {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
editorContract({ editorContract({
id: id, id: id,
assurance_status: status assurance_status: status
@ -1671,7 +1671,7 @@ export default {
type: 'info', type: 'info',
message: '已取消操作' message: '已取消操作'
}) })
}) })
}, },
// //
async getCategoryOptions() { async getCategoryOptions() {

File diff suppressed because it is too large Load Diff

@ -221,7 +221,7 @@ export default {
}, },
{ {
label: '项目名称', label: '项目名称',
minWidth: 220, width: 240,
align: 'left', align: 'left',
prop: 'project_name' prop: 'project_name'
}, },

@ -3,6 +3,18 @@
<lx-header icon="md-apps" text="预算进展情况" style="margin-bottom: 10px; border: 0px; margin-top: 15px"> <lx-header icon="md-apps" text="预算进展情况" style="margin-bottom: 10px; border: 0px; margin-top: 15px">
<div slot="content" /> <div slot="content" />
<slot> <slot>
<span style="padding: 0 6px;word-break: keep-all;">项目名称</span>
<span>
<el-input
v-model="select.name"
placeholder="请输入项目名称"
type="text"
size="small"
clearable
placement="bottom-start"
style="width: 160px"
/>
</span>
<span style="padding: 0 6px;word-break: keep-all;">年份</span> <span style="padding: 0 6px;word-break: keep-all;">年份</span>
<span> <span>
<DatePicker <DatePicker
@ -55,7 +67,7 @@
type="primary" type="primary"
style="margin-left: 10px" style="margin-left: 10px"
ghost ghost
@click="select = {pageIndex:1,year:'',type:'',department:''}" @click="select = {pageIndex:1,year:'',type:'',department:'',name:''}"
>重置</Button> >重置</Button>
<Button type="primary" style="margin-left: 10px" @click="getPlanProgress"></Button> <Button type="primary" style="margin-left: 10px" @click="getPlanProgress"></Button>
</slot> </slot>
@ -106,7 +118,8 @@ export default {
showDatePicker: '', showDatePicker: '',
start_created_at: '', start_created_at: '',
end_created_at: '', end_created_at: '',
sort_type: 'asc' sort_type: 'asc',
name: ''
}, },
rateTotal: '0%', rateTotal: '0%',
moneyTotal: 0, moneyTotal: 0,
@ -308,8 +321,9 @@ export default {
type: this.select.type, type: this.select.type,
plan_department_id: this.select.department, plan_department_id: this.select.department,
top_pid: 1, top_pid: 1,
name: this.select.name,
...this.select ...this.select
}) })
// for (var m of res.list.data) { // for (var m of res.list.data) {
// m.pid_info_name = m.pid_info?.name // m.pid_info_name = m.pid_info?.name
// } // }

@ -157,7 +157,7 @@ export default {
{ {
prop: 'name', prop: 'name',
label: '项目名称', label: '项目名称',
width: 180, width: 240,
align: 'left', align: 'left',
fixed: 'left' fixed: 'left'
}, },
@ -169,9 +169,9 @@ export default {
customFn: row => { customFn: row => {
return ( return (
<div> <div>
{ row.public_act_date ? (<Tag color='success'>采购意向公开已完成</Tag>) : (<Tag color='warning'>采购意向公开未完成</Tag>) } <div>{ row.public_act_date ? (<Tag color='success'>采购意向公开已完成</Tag>) : (<Tag color='warning'>采购意向公开未完成</Tag>) }</div>
{ row.invite_act_date ? <Tag color='success'>招标文件挂网已完成</Tag> : (<Tag color='warning'>招标文件挂网未完成</Tag>) } <div>{ row.invite_act_date ? <Tag color='success'>招标文件挂网已完成</Tag> : (<Tag color='warning'>招标文件挂网未完成</Tag>) }</div>
{ row.open_act_date ? <Tag color='success'>项目开标已完成</Tag> : (<Tag color='warning'>项目开标未完成</Tag>) } <div>{ row.open_act_date ? <Tag color='success'>项目开标已完成</Tag> : (<Tag color='warning'>项目开标未完成</Tag>) }</div>
</div> </div>
) )
} }

Loading…
Cancel
Save