刘翔宇-旅管家 3 years ago
commit 9052ad3d6f

@ -3,3 +3,4 @@ ENV = 'development'
# base api
VUE_APP_BASE_API = ''
VUE_APP_OUT_URL = http://suzhouhedaooa.langye.net

@ -10,3 +10,4 @@ export default {
name: 'App'
}
</script>

@ -0,0 +1,9 @@
import request from "@/utils/request";
export function getOatoken(params){
return request({
method:'get',
url:'/api/admin/oa/get-oa-token',
params
})
}

@ -60,8 +60,8 @@
</div>
</div>
<div class="pay-plan">
<div class="pay-plan-title"></div>
<xy-table :height="240">
<div class="pay-plan-title">付款计划</div>
<xy-table :height="240" :list="signPlan" :table-item="planTable" :show-index="false">
<template v-slot:btns>
<div></div>
</template>
@ -94,6 +94,8 @@
<script>
import {detailContract} from "@/api/contract/contract";
import {getContractSign} from "@/api/contractSign/contractSign"
import {parseTime} from "@/utils"
export default {
data() {
@ -162,12 +164,44 @@ export default {
}
}
],
signPlan:[],
planTable:[
{
prop:'date',
label:'日期',
sortable:false,
formatter:(cell,data,value)=>{
return parseTime(new Date(value),'{y}-{m}-{d}')
}
},
{
prop:'money',
label:'金额(元)',
align:'right',
sortable:false,
},
{
prop:'content',
label:'内容',
align:'left',
sortable:false,
},
{
prop:'remark',
label:'备注',
align:'left',
sortable:false,
}
]
}
},
methods: {
async getDetail(id){
let res = await detailContract({id:id})
this.detail = res
let plan = await getContractSign({contract_id:id})
this.signPlan = plan.data
},
},
@ -231,6 +265,13 @@ export default {
}
}
.pay-plan{
margin-top: 20px;
&-title{
@extend .link-budget-plan-title;
}
}
.related-processes{
margin-top: 20px;

@ -11,12 +11,6 @@
<el-input placeholder="请填写项目名称" v-model="detail.name" style="width: 300px;"/>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>项目名称</Col>-->
<!-- <Col>-->
<!-- <Input placeholder="请填写项目名称" v-model="detail.name" style="width: 300px;"/>-->
<!-- </Col>-->
<!-- </Row>-->
</template>
<template v-slot:type>
<div class="xy-table-item">
@ -29,14 +23,6 @@
</el-select>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>项目类型</Col>-->
<!-- <Col>-->
<!-- <Select placeholder="请选择项目类型" v-model="detail.type" style="width: 300px;">-->
<!-- <Option v-for="item in [{label:'服务',value:1},{label:'货品',value:2},{label:'工程',value:3}]" :value="item.value" :key="item.value">{{ item.label }}</Option>-->
<!-- </Select>-->
<!-- </Col>-->
<!-- </Row>-->
</template>
<template v-slot:methods>
<div class="xy-table-item">
@ -49,14 +35,6 @@
</el-select>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>采购形式</Col>-->
<!-- <Col>-->
<!-- <Select placeholder="请选择采购形式" v-model="detail.methods" style="width: 300px;">-->
<!-- <Option v-for="item in purchaseType" :value="item.id" :key="item.id">{{ item.value }}</Option>-->
<!-- </Select>-->
<!-- </Col>-->
<!-- </Row>-->
</template>
<template v-slot:modality>
<div class="xy-table-item">
@ -69,14 +47,6 @@
</el-select>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>采购方式</Col>-->
<!-- <Col>-->
<!-- <Select placeholder="请选择采购方式" v-model="detail.modality" style="width: 300px;">-->
<!-- <Option v-for="item in purchaseWay" :value="item.id" :key="item.id">{{ item.value }}</Option>-->
<!-- </Select>-->
<!-- </Col>-->
<!-- </Row>-->
</template>
<template v-slot:price>
<div class="xy-table-item">
@ -87,13 +57,16 @@
<el-input placeholder="请填写合同预算价" v-model="detail.price" style="width: 300px;"/>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>合同预算价</Col>-->
<!-- <Col>-->
<!-- <Input placeholder="请填写合同预算价" v-model="detail.price" style="width: 300px;"/>-->
<!-- </Col>-->
<!-- <Col offset="1"></Col>-->
<!-- </Row>-->
</template>
<template v-slot:money>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>合同金额
</div>
<div class="xy-table-item-content xy-table-item-price">
<el-input placeholder="请填写合同金额" v-model="detail.money" style="width: 300px;"/>
</div>
</div>
</template>
<template v-slot:fundingChannels>
<div class="xy-table-item">
@ -106,14 +79,26 @@
</el-select>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>资金渠道</Col>-->
<!-- <Col>-->
<!-- <Select placeholder="请选择资金渠道" v-model="detail.fundingChannels" style="width: 300px;">-->
<!-- <Option v-for="item in moneyWay" :value="item.id" :key="item.id">{{ item.value }}</Option>-->
<!-- </Select>-->
<!-- </Col>-->
<!-- </Row>-->
</template>
<template v-slot:supply>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>供应商
</div>
<div class="xy-table-item-content">
<el-input placeholder="请填写供应商" v-model="detail.supply" style="width: 300px;"/>
</div>
</div>
</template>
<template v-slot:carryDepartment>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>执行部门
</div>
<div class="xy-table-item-content">
<el-input placeholder="请填写执行部门" v-model="detail.carryDepartment" style="width: 300px;"/>
</div>
</div>
</template>
<template v-slot:isBudget>
<div class="xy-table-item">
@ -124,12 +109,6 @@
<el-switch v-model="detail.isBudget"/>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>是否预算</Col>-->
<!-- <Col>-->
<!-- <i-switch v-model="detail.isBudget" @on-change="detail.isBudget = $event" />-->
<!-- </Col>-->
<!-- </Row>-->
</template>
<template v-if="detail.isBudget" v-slot:plan>
<div class="xy-table-item">
@ -149,21 +128,6 @@
</div>
</div>
</div>
<!-- <Row>-->
<!-- <Col span="5"><span style="font-weight: 600;padding-right: 4px;color: red;">*</span>关联预算计划</Col>-->
<!-- <Col style="margin: auto 0;">-->
<!-- <div class="contract-add-plan" style="width: 300px;" @click="isShowPlan = true,getBudgets()">-->
<!-- <template v-if="detail.plan.length > 0">-->
<!-- <template v-for="item in detail.plan">-->
<!-- <Tag closable color="primary" @on-close="delPlan(item)">{{item.label}}</Tag>-->
<!-- </template>-->
<!-- </template>-->
<!-- <template v-else>-->
<!-- <div class="contract-add-plan-no-plan">请选择关联计划</div>-->
<!-- </template>-->
<!-- </div>-->
<!-- </Col>-->
<!-- </Row>-->
</template>
</xy-dialog>
@ -237,9 +201,18 @@ export default {
price:[
{required:true,message:"必填"}
],
money:[
{required:true,message:"必填"}
],
fundingChannels:[
{required:true,message:"必填"}
],
supply:[
{required:true,message:"必填"}
],
carryDepartment:[
{required:true,message:"必填"}
],
plan:[
{validator:planPass}
]
@ -345,6 +318,9 @@ export default {
modality:res.purchase_way_id,
fundingChannels:res.money_way_id,
price:res.plan_price,
money:res.money,
supply:res.supply,
carryDepartment:res.carry_department,
isBudget:res.is_plan === 1 ? true : false,
plan:res.plans.map(item=>{
return {
@ -368,6 +344,7 @@ export default {
money_way_id:this.detail.fundingChannels,
plan_price:this.detail.price,
name:this.detail.name,
carry_department:this.detail.carryDepartment,
contract_plan_links:this.detail.plan.map(item=>{
return item.value
})

@ -242,7 +242,7 @@ export default {
//
percentPay(){
let total = this.totalMoney()
return this.contract.money/total || 0
return (total/this.contract.money)*100 || 0
},
async getRegistration(id){

@ -225,7 +225,7 @@ export default {
//
percentPay(){
let total = this.totalMoney()
return this.contract.money/total || 0
return (total/this.contract.money)*100 || 0
},
//

@ -7,7 +7,7 @@
<div class="print-table1-grid">
<div style="grid-area: tb1-1" class="print-table1-grid-top">项目名称<span style="font-weight: 600">{{registration.contract.name}}</span></div>
<div style="grid-area: tb1-2;justify-content: center;align-items: center;" ><span>本次为第</span><span style="padding-left: 2vw">次付款</span></div>
<div style="grid-area: tb1-2;justify-content: center;align-items: center;" >本次为第 <span style="font-weight: 600;padding: 0 1vw;">{{payIndex}}</span> 次付款</div>
<div style="grid-area: tb2-1" class="print-table1-grid-top">承包商/供货商<span style="font-weight: 600">{{registration.contract.supply}}</span></div>
<div style="grid-area: tb2-2" class="print-table1-grid-top">合同服务时间<span style="font-weight: 600">{{dateFormat(registration.created_at)}}</span></div>
@ -25,15 +25,15 @@
<div style="grid-area: tb5-4"></div>
<div style="grid-area: tb6-1" class="print-table1-grid-center">C</div>
<div style="grid-area: tb6-2" class="print-table1-grid-center">前期累计已支付</div>
<div style="grid-area: tb6-3"></div>
<div style="grid-area: tb6-3" class="print-table1-grid-center">{{priceFormat(beforeTotalMoney)}}</div>
<div style="grid-area: tb6-4"></div>
<div style="grid-area: tb7-1" class="print-table1-grid-center">D</div>
<div style="grid-area: tb7-2" class="print-table1-grid-center">本期扣款</div>
<div style="grid-area: tb7-3"></div>
<div style="grid-area: tb7-3" class="print-table1-grid-center">{{priceFormat(registration.act_money)}}</div>
<div style="grid-area: tb7-4"></div>
<div style="grid-area: tb8-1" class="print-table1-grid-center">E</div>
<div style="grid-area: tb8-2" class="print-table1-grid-center">本期应付款</div>
<div style="grid-area: tb8-3"></div>
<div style="grid-area: tb8-3" class="print-table1-grid-center">{{priceFormat(registration.apply_money)}}</div>
<div style="grid-area: tb8-4;padding-left: 0.6vw;display: block;">
<div style="display: flex;align-items: center;">
<div><span v-if="registration.type == '进度款'"></span></div>
@ -81,7 +81,7 @@
</template>
<script>
import {detailFundLog} from "@/api/paymentRegistration/fundLog"
import {detailFundLog,getFundLog} from "@/api/paymentRegistration/fundLog"
import html2canvas from 'html2canvas'
import * as printJS from "print-js";
@ -91,14 +91,30 @@ export default {
data() {
return {
isShow:false,
registration:null
registration:null,
beforeTotalMoney:0,
payIndex:1,
}
},
methods: {
async getDetailFundLog(id){
let res = await detailFundLog({id})
this.registration = res
console.log(this.registration)
let res1 = await getFundLog({contract_id:this.registration.contract.id})
if(res1.data.length>0){
res1.data.map(item => {
this.beforeTotalMoney += Number(item.act_money)
})
this.beforeTotalMoney -= Number(this.registration.act_money)
}else{
this.beforeTotalMoney = 0
}
let nowIndex = res?.id
let idList = res1.data.map(item => {
return item.id
}).sort()
this.payIndex = idList.indexOf(nowIndex)+1
},
async print(){
@ -122,7 +138,7 @@ export default {
},
priceFormat(){
return function (price){
return price.toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,')
return Number(price).toFixed(2).replace(/(\d)(?=(\d{3})+\.)/g, '$1,')
}
}
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save