master
xy 3 years ago
parent eaa4ae5f03
commit b926016c65

@ -47,3 +47,11 @@ export function checkContractName(params){
params params
}) })
} }
export function updateStatus(params){
return request({
method:'get',
url:'api/admin/oa/update-contract',
params
})
}

@ -1,5 +1,5 @@
import request from "@/utils/request" import request from "@/utils/request"
export function getOutDetail({ tbname,out_contract_id }) { export function getOutDetail({ tbname,out_caigou_id,out_contract_id }) {
return request({ return request({
method: 'get', method: 'get',
url: '/index.php', url: '/index.php',
@ -7,6 +7,7 @@ export function getOutDetail({ tbname,out_contract_id }) {
params: { params: {
s: "/Api/flowDetail", s: "/Api/flowDetail",
tbname, tbname,
out_caigou_id,
out_contract_id out_contract_id
} }
}) })

@ -549,7 +549,7 @@ export default {
this.outContractDetail = res; this.outContractDetail = res;
} }
); );
getOutDetail({ tbname: "caigou", out_contract_id: this.id }).then( getOutDetail({ tbname: "caigou", out_caigou_id: this.id }).then(
(res) => { (res) => {
this.outCaigouDetail = res; this.outCaigouDetail = res;
} }

@ -20,9 +20,11 @@
<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-switch v-model="detail.is_simple" active-text="" inactive-text="" :active-value="1" :inactive-value="0"/> <div style="display:flex;width: 300px;align-items: center;">
<el-switch v-model="detail.is_simple" active-text="" inactive-text="" :active-value="1" :inactive-value="0"/>
<div style="flex: 1;text-align: right;">水电煤报刊订阅网络通讯车辆使用等费用付款</div>
</div>
</div> </div>
<div>水电煤报刊订阅网络通讯车辆使用等费用付款</div>
</div> </div>
</template> </template>
<template v-slot:supply v-if="detail.is_simple"> <template v-slot:supply v-if="detail.is_simple">
@ -190,7 +192,7 @@
<!-- 编辑中 预算计划 --> <!-- 编辑中 预算计划 -->
<xy-dialog :is-show.sync="isShowPlan" title="预算计划" :width="640" @on-ok="planSelect"> <xy-dialog :is-show.sync="isShowPlan" title="预算计划" :width="640" @on-ok="planSelect">
<template v-slot:normalContent> <template>
<Input v-model="planSearch" search enter-button=" " placeholder="搜索预算计划.." @on-search="getBudgets" /> <Input v-model="planSearch" search enter-button=" " placeholder="搜索预算计划.." @on-search="getBudgets" />
<xy-table :list="plans" :show-index="false" :table-item="planTable" :height="310" style="margin-top: 10px;" <xy-table :list="plans" :show-index="false" :table-item="planTable" :height="310" style="margin-top: 10px;"

@ -399,9 +399,9 @@
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<div class="contract-add-plan" style="width: 300px;" @click="isShowContractToContracts = true"> <div class="contract-add-plan" style="width: 300px;" @click="isShowContractToContracts = true">
<template v-if="form.plan.length > 0"> <template v-if="selections.length > 0">
<template v-for="item in form.plan"> <template v-for="item in selections">
<Tag closable color="primary" @on-close="delPlan(item)">{{ item.label }}</Tag> <Tag closable color="primary" @on-close="delSelections(item)">{{ item.name }}</Tag>
</template> </template>
</template> </template>
<template v-else> <template v-else>
@ -435,7 +435,7 @@
<!-- 搜索使用 预算计划 --> <!-- 搜索使用 预算计划 -->
<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>
<Input v-model="planSearch.name" search enter-button=" " placeholder="搜索预算计划.." <Input v-model="planSearch.name" search enter-button=" " placeholder="搜索预算计划.."
@on-search="searchBudgets"/> @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;
@ -490,7 +490,7 @@
</template> </template>
<template v-slot:footerContent> <template v-slot:footerContent>
<Button type="primary" @click="isShowPlan = false"></Button> <Button type="primary" @click="planSelect"></Button>
</template> </template>
</xy-dialog> </xy-dialog>
@ -517,7 +517,7 @@
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="isShowContractToContracts = false"> </el-button> <el-button @click="isShowContractToContracts = false"> </el-button>
<el-button type="primary" @click="submit"> </el-button> <el-button type="primary" @click="isShowContractToContracts = false"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
@ -544,7 +544,8 @@ import {
getContract, getContract,
addContrant, addContrant,
delContract, delContract,
checkContractName checkContractName,
updateStatus
} from "@/api/contract/contract" } from "@/api/contract/contract"
import { import {
getparameter getparameter
@ -570,6 +571,7 @@ import {
import { import {
getToken getToken
} from '@/utils/auth' } from '@/utils/auth'
import { getOutDetail } from "@/api/out"
import editor from "./components/editorContract" import editor from "./components/editorContract"
import detail from "./components/detailContract" import detail from "./components/detailContract"
import paymentRegistration from "./components/paymentRegistration"; import paymentRegistration from "./components/paymentRegistration";
@ -673,6 +675,7 @@ export default {
return { return {
userList: ["liuxiangyu", "zhushulan", "admin", "jiangjiao"], userList: ["liuxiangyu", "zhushulan", "admin", "jiangjiao"],
nowContract: {},
window: { window: {
width: 0, width: 0,
height: 0, height: 0,
@ -1491,6 +1494,13 @@ export default {
this.getContracts(); this.getContracts();
}, },
//
setNowContract(contract,tbname) {
this.nowContract = {
...contract,
tbname
}
},
// //
showPaymentPlan(row, column, cell) { showPaymentPlan(row, column, cell) {
if (column.property === 'sign_plan_count') { if (column.property === 'sign_plan_count') {
@ -1509,7 +1519,7 @@ export default {
"项目名称": row?.name, "项目名称": row?.name,
"项目预算(元)": row?.plan_price "项目预算(元)": row?.plan_price
} }
let res = await getOatoken() //let res = await getOatoken()
let url = let url =
`${process.env.VUE_APP_OUT_OLD}?s=/flow/add/modid/8&oatoken=${res.oatoken}&out_contract_id=${row.id}&contract_json=${JSON.stringify(baseInfo)}` `${process.env.VUE_APP_OUT_OLD}?s=/flow/add/modid/8&oatoken=${res.oatoken}&out_contract_id=${row.id}&contract_json=${JSON.stringify(baseInfo)}`
let bidding = window.open(url, 'bidding', let bidding = window.open(url, 'bidding',
@ -1519,10 +1529,12 @@ export default {
// //
async buyProcess(row) { async buyProcess(row) {
this.setNowContract(row,'caigou')
let baseInfo = { let baseInfo = {
"title": row?.name, "title": row?.name,
//"": row?.purchase_type?.value, //"": row?.purchase_type?.value,
"iszhengfucaigou": row.purchase_type.value === "政府采购" ? "是" : "否", "iszhengfucaigou": row.purchase_type.value === "政府采购" ? "政府采购" : "否",
"out_caigou_id": row.id,
"type": this.type.filter(item => { "type": this.type.filter(item => {
return item.value === row.type return item.value === row.type
})[0]?.label, })[0]?.label,
@ -1535,9 +1547,9 @@ export default {
} }
},"") },"")
} }
let res = await getOatoken() // let res = await getOatoken()
let url = let url =
`${process.env.VUE_APP_OUT_OLD}?s=/flow/add/modid/8&username=${this.$store.state.user.username}&out_contract_id=${row.id}&contract_json=${JSON.stringify(baseInfo)}` `${process.env.VUE_APP_OUT_OLD}?s=/flow/add/modid/8&id=${this.$store.state.user.userId}&username=${this.$store.state.user.username}&out_caigou_id=${row.id}&contract_json=${JSON.stringify(baseInfo)}`
let buyProcess = window.open(url, 'buyProcess', let buyProcess = window.open(url, 'buyProcess',
`top=${this.window.top},left=${this.window.left},width=${this.window.width},height=${this.window.height},location=0` `top=${this.window.top},left=${this.window.left},width=${this.window.width},height=${this.window.height},location=0`
) )
@ -1550,7 +1562,7 @@ export default {
"total": row?.money, "total": row?.money,
//"\\":row.supply //"\\":row.supply
} }
let res = await getOatoken() // let res = await getOatoken()
let url = let url =
`${process.env.VUE_APP_OUT_OLD}?s=/flow/add/modid/9&username=${this.$store.state.user.username}&out_contract_id=${row.id}&contract_json=${JSON.stringify(baseInfo)}` `${process.env.VUE_APP_OUT_OLD}?s=/flow/add/modid/9&username=${this.$store.state.user.username}&out_contract_id=${row.id}&contract_json=${JSON.stringify(baseInfo)}`
let signProcess = window.open(url, 'signProcess', let signProcess = window.open(url, 'signProcess',
@ -1761,6 +1773,13 @@ export default {
} }
}) })
}, },
delSelections(val) {
this.selections.map((item, index) => {
if (item.id === val.id) {
this.selections.splice(index, 1)
}
})
},
// //
planSelectForSearch() { planSelectForSearch() {
if (this.select.plan_id == "") { if (this.select.plan_id == "") {
@ -1805,13 +1824,14 @@ export default {
is_simple:this.form.is_simple, is_simple:this.form.is_simple,
supply:this.form.supply, supply:this.form.supply,
money:this.form?.money, money:this.form?.money,
status:this.form?.is_simple ? 2 : 1 status:this.form?.is_simple ? 2 : 1,
}).then(res => { }).then(res => {
this.isShowAdd = false this.isShowAdd = false
Message({ Message({
type: 'success', type: 'success',
message: '操作成功' message: '操作成功'
}) })
this.selections = [];
this.$refs['addContract'].reset() this.$refs['addContract'].reset()
this.$refs['planTable'].clearSelection() this.$refs['planTable'].clearSelection()
this.getContracts() this.getContracts()
@ -1836,16 +1856,21 @@ export default {
// //
async getContractToContracts() { async getContractToContracts() {
const res = await getContract(this.contractSelect) const res = await getContract(this.contractSelect)
this.contractList = res.list.data let selectedIds = this.selections.map(i => i.id)
this.contractList = res.list.data.map(item => {
return {
...item,
_checked: !!selectedIds.find(i => i === item.id),
}
})
this.contractTotal = res.list.total this.contractTotal = res.list.total
}, },
selectionChange(selection) { selectionChange(selection) {
this.selections = Array.from( this.selections = Array.from(
new Set( new Set(
selection.map((item) => item.id) selection
) )
); );
console.log(this.selections);
}, },
}, },
watch: { watch: {
@ -1853,7 +1878,6 @@ export default {
if(val){ if(val){
this.getContractToContracts(); this.getContractToContracts();
}else{ }else{
this.selections = [];
resetSelect(this.contractSelect); resetSelect(this.contractSelect);
this.contractList = []; this.contractList = [];
this.contractTotal = 0; this.contractTotal = 0;
@ -1883,8 +1907,32 @@ export default {
this.getPurchaseWay() this.getPurchaseWay()
this.getMoneyWay() this.getMoneyWay()
// //
window.onfocus = () => { window.onfocus = async () => {
this.getContracts() if(this.nowContract?.tbname && this.nowContract?.id) {
const res = await getOutDetail({tbname:this.nowContract.tbname,out_caigou_id:this.nowContract.id})
let flowIdMap = new Map([
['caigou',8]
])
let flowTypeMap = new Map([
['caigou',2]
])
let getStatus = (status) => {
if(status === 'end') {
return 1
}
if(Number(status)){
return 0
}
return -1
}
await updateStatus({
flow_id: flowIdMap.get(this.nowContract.tbname),
flow_type: flowTypeMap.get(this.nowContract.tbname),
out_contract_id: this.nowContract.id,
status: getStatus(res.flow?.current_step)
})
await this.getContracts()
}
} }
}, },
created() { created() {

Loading…
Cancel
Save