|
|
|
@ -29,7 +29,8 @@
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<span style="padding: 0 6px;word-break: keep-all;">签订年份</span>
|
|
|
|
<span style="padding: 0 6px;word-break: keep-all;">签订年份</span>
|
|
|
|
<span>
|
|
|
|
<span>
|
|
|
|
<DatePicker :value="select.year" placeholder="选择年份" placement="bottom" style="width: 90px;" type="year"
|
|
|
|
<DatePicker :value="select.year" placeholder="选择年份" placement="bottom" style="width: 90px;"
|
|
|
|
|
|
|
|
type="year"
|
|
|
|
@on-change="(e)=>select.year = e"></DatePicker>
|
|
|
|
@on-change="(e)=>select.year = e"></DatePicker>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
@ -54,7 +55,8 @@
|
|
|
|
<span style="padding: 0 6px;word-break: keep-all;">
|
|
|
|
<span style="padding: 0 6px;word-break: keep-all;">
|
|
|
|
业务科室
|
|
|
|
业务科室
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<el-select v-model="select.department_id" clearable placeholder="业务科室选择" size="small" style="width: 120px;">
|
|
|
|
<el-select v-model="select.department_id" clearable placeholder="业务科室选择" size="small"
|
|
|
|
|
|
|
|
style="width: 120px;">
|
|
|
|
<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-option>
|
|
|
|
</el-option>
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
@ -187,15 +189,18 @@
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<!-- <Button class="slot-btns-item" type="primary" size="small">附件管理</Button>-->
|
|
|
|
<!-- <Button class="slot-btns-item" type="primary" size="small">附件管理</Button>-->
|
|
|
|
<template v-if="scope.row.req_status === 1 && scope.row.is_plan === 0 && !scope.row.is_substitute">
|
|
|
|
<template v-if="scope.row.req_status === 1 && scope.row.is_plan === 0 && !scope.row.is_substitute">
|
|
|
|
<Button class="slot-btns-item" size="small" type="primary" @click="askProcess(scope.row)">请示流程</Button>
|
|
|
|
<Button class="slot-btns-item" size="small" type="primary" @click="askProcess(scope.row)">请示流程
|
|
|
|
|
|
|
|
</Button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template
|
|
|
|
<template
|
|
|
|
v-if="(scope.row.join_status === 1 && ((scope.row.invite_status === 3)||(scope.row.purchase_way.remark === 'false' && scope.row.purchase_status === 3)) || ( scope.row.is_substitute && scope.row.join_status === 1) ) ">
|
|
|
|
v-if="(scope.row.join_status === 1 && ((scope.row.invite_status === 3)||(scope.row.purchase_way.remark === 'false' && scope.row.purchase_status === 3)) || ( scope.row.is_substitute && scope.row.join_status === 1) ) ">
|
|
|
|
<Button class="slot-btns-item" size="small" type="primary" @click="signProcess(scope.row)">合同会签</Button>
|
|
|
|
<Button class="slot-btns-item" size="small" type="primary" @click="signProcess(scope.row)">合同会签
|
|
|
|
|
|
|
|
</Button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template
|
|
|
|
<template
|
|
|
|
v-if="scope.row.purchase_status === 1 && ((scope.row.req_status === 3 && scope.row.is_plan === 0)||scope.row.is_plan === 1)&& !scope.row.is_substitute ">
|
|
|
|
v-if="scope.row.purchase_status === 1 && ((scope.row.req_status === 3 && scope.row.is_plan === 0)||scope.row.is_plan === 1)&& !scope.row.is_substitute ">
|
|
|
|
<Button class="slot-btns-item" size="small" type="primary" @click="buyProcess(scope.row)">采购流程</Button>
|
|
|
|
<Button class="slot-btns-item" size="small" type="primary" @click="buyProcess(scope.row)">采购流程
|
|
|
|
|
|
|
|
</Button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<Poptip trigger="hover" placement="bottom" transfer>
|
|
|
|
<Poptip trigger="hover" placement="bottom" transfer>
|
|
|
|
@ -249,7 +254,27 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-slot:type>
|
|
|
|
<template v-slot:is_simple>
|
|
|
|
|
|
|
|
<div class="xy-table-item">
|
|
|
|
|
|
|
|
<div class="xy-table-item-label">
|
|
|
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;font-size: 11px;">*是否为简易流程(水电煤、报刊订阅、网络通讯、车辆使用等费用付款)</span>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
|
|
|
<el-switch v-model="form.is_simple" active-text="是" inactive-text="否" :active-value="1" :inactive-value="0"/>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template v-slot:supply v-if="form.is_simple">
|
|
|
|
|
|
|
|
<div class="xy-table-item">
|
|
|
|
|
|
|
|
<div class="xy-table-item-label">
|
|
|
|
|
|
|
|
<span style="color: red;font-weight: 600;padding-right: 4px;font-size: 11px;">*</span>承包商/供货商
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="xy-table-item-content">
|
|
|
|
|
|
|
|
<el-input v-model="form.supply" placeholder="请填写承包商/供货商" style="width: 300px;"/>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<template v-slot:type v-if="!form.is_simple">
|
|
|
|
<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>项目类型
|
|
|
|
@ -261,7 +286,7 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-slot:methods>
|
|
|
|
<template v-slot:methods v-if="!form.is_simple">
|
|
|
|
<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>采购形式
|
|
|
|
@ -273,7 +298,7 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-slot:modality>
|
|
|
|
<template v-slot:modality v-if="!form.is_simple">
|
|
|
|
<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>采购类型
|
|
|
|
@ -285,7 +310,7 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
<template v-slot:price>
|
|
|
|
<template v-slot:price v-if="!form.is_simple">
|
|
|
|
<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>合同预算价
|
|
|
|
@ -350,11 +375,11 @@
|
|
|
|
</xy-dialog>
|
|
|
|
</xy-dialog>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 搜索使用 预算计划 -->
|
|
|
|
<!-- 搜索使用 预算计划 -->
|
|
|
|
<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="searchBudgets" />
|
|
|
|
<Input v-model="planSearch.name" search enter-button="搜 索" placeholder="搜索预算计划.."
|
|
|
|
|
|
|
|
@on-search="searchBudgets"/>
|
|
|
|
<div style="margin: 10px 0;display: flex;justify-content: space-between;
|
|
|
|
<div 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>
|
|
|
|
@ -478,10 +503,69 @@
|
|
|
|
var planPass = (rule, value, callback) => {
|
|
|
|
var planPass = (rule, value, callback) => {
|
|
|
|
if (this.form.isBudget) {
|
|
|
|
if (this.form.isBudget) {
|
|
|
|
if (this.form.plan.length === 0) {
|
|
|
|
if (this.form.plan.length === 0) {
|
|
|
|
return callback(new Error('必选'))
|
|
|
|
callback(new Error('必选'))
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var supplyPass = (rule,value,callback) => {
|
|
|
|
|
|
|
|
if(this.form.is_simple){
|
|
|
|
|
|
|
|
if(value === ''){
|
|
|
|
|
|
|
|
callback(new Error('必填'))
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var typePass = (rule,value,callback) => {
|
|
|
|
|
|
|
|
if(!this.form.is_simple){
|
|
|
|
|
|
|
|
if(value === ''){
|
|
|
|
|
|
|
|
callback(new Error('必填'))
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var methodsPass = (rule,value,callback) => {
|
|
|
|
|
|
|
|
if(!this.form.is_simple){
|
|
|
|
|
|
|
|
if(value === ''){
|
|
|
|
|
|
|
|
callback(new Error('必填'))
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var modalityPass = (rule,value,callback) => {
|
|
|
|
|
|
|
|
if(!this.form.is_simple){
|
|
|
|
|
|
|
|
if(value === ''){
|
|
|
|
|
|
|
|
callback(new Error('必填'))
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
callback()
|
|
|
|
callback()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
var pricePass = (rule,value,callback) => {
|
|
|
|
|
|
|
|
if(!this.form.is_simple){
|
|
|
|
|
|
|
|
if(value === ''){
|
|
|
|
|
|
|
|
callback(new Error('必填'))
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
if(/^\d+(\.\d+)?$/.test(value)){
|
|
|
|
|
|
|
|
callback()
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
callback(new Error('必须为数字'))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
}else{
|
|
|
|
callback()
|
|
|
|
callback()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -751,8 +835,7 @@
|
|
|
|
}> {
|
|
|
|
}> {
|
|
|
|
per
|
|
|
|
per
|
|
|
|
} %
|
|
|
|
} %
|
|
|
|
<
|
|
|
|
</div>
|
|
|
|
/div>
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -952,6 +1035,8 @@
|
|
|
|
isShowAdd: false,
|
|
|
|
isShowAdd: false,
|
|
|
|
form: {
|
|
|
|
form: {
|
|
|
|
name: "",
|
|
|
|
name: "",
|
|
|
|
|
|
|
|
is_simple:0,
|
|
|
|
|
|
|
|
supply: "",
|
|
|
|
type: "",
|
|
|
|
type: "",
|
|
|
|
methods: "",
|
|
|
|
methods: "",
|
|
|
|
modality: "",
|
|
|
|
modality: "",
|
|
|
|
@ -967,27 +1052,37 @@
|
|
|
|
required: true,
|
|
|
|
required: true,
|
|
|
|
message: "必填"
|
|
|
|
message: "必填"
|
|
|
|
}],
|
|
|
|
}],
|
|
|
|
type: [{
|
|
|
|
supply:[
|
|
|
|
required: true,
|
|
|
|
{
|
|
|
|
message: "必选"
|
|
|
|
validator:supplyPass,
|
|
|
|
}],
|
|
|
|
trigger: 'change'
|
|
|
|
methods: [{
|
|
|
|
}
|
|
|
|
required: true,
|
|
|
|
],
|
|
|
|
message: "必选"
|
|
|
|
type:[
|
|
|
|
}],
|
|
|
|
{
|
|
|
|
modality: [{
|
|
|
|
validator: typePass,
|
|
|
|
required: true,
|
|
|
|
trigger: 'change'
|
|
|
|
message: "必选"
|
|
|
|
}
|
|
|
|
}],
|
|
|
|
],
|
|
|
|
price: [{
|
|
|
|
methods:[
|
|
|
|
required: true,
|
|
|
|
{
|
|
|
|
message: "必填"
|
|
|
|
validator:methodsPass,
|
|
|
|
},
|
|
|
|
trigger: 'change'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
modality:[
|
|
|
|
{
|
|
|
|
{
|
|
|
|
pattern: /^\d+(\.\d+)?$/,
|
|
|
|
validator:modalityPass,
|
|
|
|
message: '必须为数字'
|
|
|
|
trigger: 'change'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
],
|
|
|
|
|
|
|
|
price:[
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
validator:pricePass,
|
|
|
|
|
|
|
|
trigger: 'change'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
|
|
fundingChannels: [{
|
|
|
|
fundingChannels: [{
|
|
|
|
required: true,
|
|
|
|
required: true,
|
|
|
|
message: "必填"
|
|
|
|
message: "必填"
|
|
|
|
@ -1433,8 +1528,6 @@
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//说明被删除了
|
|
|
|
//说明被删除了
|
|
|
|
if (sel.filter(plan => {
|
|
|
|
if (sel.filter(plan => {
|
|
|
|
return plan.id == row.id
|
|
|
|
return plan.id == row.id
|
|
|
|
@ -1536,7 +1629,9 @@
|
|
|
|
contract_plan_links: this.form.plan.map(item => {
|
|
|
|
contract_plan_links: this.form.plan.map(item => {
|
|
|
|
return item.value
|
|
|
|
return item.value
|
|
|
|
}),
|
|
|
|
}),
|
|
|
|
is_substitute: this.form.is_substitute
|
|
|
|
is_substitute: this.form.is_substitute,
|
|
|
|
|
|
|
|
is_simple:this.form.is_simple,
|
|
|
|
|
|
|
|
supply:this.form.supply
|
|
|
|
}).then(res => {
|
|
|
|
}).then(res => {
|
|
|
|
this.isShowAdd = false
|
|
|
|
this.isShowAdd = false
|
|
|
|
Message({
|
|
|
|
Message({
|
|
|
|
@ -1577,7 +1672,8 @@
|
|
|
|
that.hasEdit = true;
|
|
|
|
that.hasEdit = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}).catch(error => {})
|
|
|
|
}).catch(error => {
|
|
|
|
|
|
|
|
})
|
|
|
|
this.getPurchaseType()
|
|
|
|
this.getPurchaseType()
|
|
|
|
this.getContracts()
|
|
|
|
this.getContracts()
|
|
|
|
this.getDepartment()
|
|
|
|
this.getDepartment()
|
|
|
|
@ -1639,7 +1735,7 @@
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.xy-table-item-label {
|
|
|
|
.xy-table-item-label {
|
|
|
|
width: 140px;
|
|
|
|
width: 200px;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.xy-table-item-price {
|
|
|
|
.xy-table-item-price {
|
|
|
|
|