Files
income_payments_enterprise_…/src/views/MessagePage/ProjectDetailModal.vue
T

479 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
switchFullscreen
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="basicLoading">
<!-- 基本信息begin-->
<section class="base-info">
<h3 class="title">基本信息</h3>
<a-row :gutter="24">
<a-col :span="12" class="detail-item">
<label>项目名称:</label>
<span><j-ellipsis :value="basicInfo.chargeProject" :length="20"></j-ellipsis></span>
</a-col>
<!-- 我的项目--款项用途-->
<a-col :span="12" v-if="basicInfo.projectType === 1" class="detail-item">
<label>款项用途:</label>
<span><j-ellipsis :value="basicInfo.chargeUse_dictText" :length="20"></j-ellipsis></span>
</a-col>
<a-col :span="12" class="detail-item">
<label>项目负责人:</label>
<span><j-ellipsis :value="basicInfo.principalName" :length="20"></j-ellipsis></span>
</a-col>
<a-col :span="12" class="detail-item">
<label>应付金额:</label>
<span><j-ellipsis :value="`${basicInfo.receivableAmount}元`" :length="20"></j-ellipsis></span>
</a-col>
<a-col :span="12" class="detail-item">
<label>实付金额:</label>
<span><j-ellipsis :value="`${basicInfo.paidAmount}元`" :length="20"></j-ellipsis></span>
</a-col>
<a-col :span="12" class="detail-item">
<label>打包:</label>
<span><j-ellipsis :value="basicInfo.pack_dictText" :length="20"></j-ellipsis></span>
</a-col>
<a-col :span="12" class="detail-item">
<label>需要发票:</label>
<span><j-ellipsis :value="basicInfo.needInvoice_dictText" :length="20"></j-ellipsis></span>
</a-col>
<a-col :span="12" class="detail-item">
<label>付款方式:</label>
<span><j-ellipsis :value="basicInfo.chargeWay_dictText" :length="20"></j-ellipsis></span>
</a-col>
<!-- 合同-->
<a-col :span="12" v-if="basicInfo.chargeWay === 2" class="detail-item">
<label>合同编号:</label>
<span><j-ellipsis :value="basicInfo.contractNum"
:length="20"></j-ellipsis></span>
</a-col>
<!-- 收费通知-->
<a-col :span="12" v-if="basicInfo.chargeWay === 3" class="detail-item">
<label>收费通知号:</label>
<span><j-ellipsis :value="basicInfo.chargeNoticeNo" :length="20"></j-ellipsis></span>
</a-col>
<a-col :span="12" v-if="basicInfo.chargeWay === 3" class="detail-item">
<label>收费通知:</label>
<span style="width: 100%;"><preview-file style="width: 80%"
:file-id="basicInfo.chargeNoticeId"></preview-file></span>
</a-col>
</a-row>
<!-- <a-row :gutter="24" v-if="basicInfo.files">-->
<!-- <a-col class="detail-item">-->
<!-- <label>项目资料:</label>-->
<!-- <span style="width: 100%;">-->
<!-- <preview-file style="width: 80%" :file-id="basicInfo.files"></preview-file>-->
<!-- </span>-->
<!-- </a-col>-->
<!-- </a-row>-->
</section>
<!-- 基本信息end-->
<!--到账信息begin-->
<section class="payment-info">
<div class="collapsible-title">
<h3 class="title">付款信息</h3>
<a-button type="link" @click="viewPaymentInfo">{{ showPaymentInfo ? '收起' : '查看' }}</a-button>
</div>
<div class="payment-info-box" v-show="showPaymentInfo">
<section class="payment-info-title">付款信息</section>
<template v-if="paymentInfoList && paymentInfoList.length > 0">
<div class="payment-info-content" v-for="item of paymentInfoList" :key="item.id">
{{ item.paymentDate }}付款{{ item.amountReceived }}元
</div>
</template>
<a-list v-else :data-source="[]"/>
</div>
</section>
<!--到账信息end-->
<!--开票邮寄信息begin-->
<section class="logistics-info">
<div class="collapsible-title">
<h3 class="title">开票邮寄信息</h3>
<a-button type="link" @click="viewMailInfo">{{ showMailInfo ? '收起' : '查看' }}</a-button>
</div>
<div class="wrap-table" v-show="showMailInfo">
<a-table
ref="table"
size="middle"
rowKey="id"
:pagination="false"
:columns="columns"
:dataSource="logisticsInfoList"
class="j-table-force-nowrap"
>
<span slot="action" slot-scope="record" class="action-span-cell">
<a @click="lookLogistics(record)" v-if="record.postStatus === 1">查看物流</a>
</span>
<!-- <p slot="expandedRowRender" slot-scope="record" style="margin: 0">-->
<!-- {{ record.sendDate }}-->
<!-- </p>-->
</a-table>
</div>
</section>
<!--开票邮寄信息end-->
<!-- 项目资料-->
<div class="meeting basic-box" v-if="basicInfo.files">
<h3 class="title">项目资料</h3>
<file-list ref="fileListTable" :data-source="fileList" :file-loading="fileLoading"></file-list>
</div>
<template slot="footer">
<a-button @click="handleCancel">关闭</a-button>
</template>
</a-spin>
</j-modal>
</template>
<script>
import { queryCommonProjectById } from '@api/incomePaymentsApi'
import JEllipsis from '@comp/jero/JEllipsis'
import PreviewFile from '@comp/jero/PreviewFile'
import FileList from '@comp/detailPage/FileList'
import { getFileInfo } from '@api/api'
// import {getAction} from "@api/manage";
const columns = [
{
title: '开票人',
align: 'center',
dataIndex: 'realName'
},
{
title: '日期',
align: 'center',
dataIndex: 'billDate'
},
{
title: '金额(元)',
align: 'center',
dataIndex: 'invoiceAmount'
},
{
title: '票号',
align: 'center',
dataIndex: 'billNo'
},
{
title: '项目',
align: 'center',
dataIndex: 'projectName'
},
{
title: '邮寄人',
align: 'center',
dataIndex: 'mailName'
},
{
title: '快递',
align: 'center',
dataIndex: 'sendMethod_dictText'
},
{
title: '快递单号',
align: 'center',
dataIndex: 'postNo'
},
{
title: '操作',
align: 'center',
dataIndex: '',
scopedSlots: { customRender: 'action' }
}
]
export default {
name: 'ProjectDetailModal',
props: {
// 字段名称是否非id,适用于票据邮寄等页面id不是项目id的情况
notId: {
type: Boolean,
required: false,
default: false
}
},
data() {
return {
description: '项目详情模态框',
width: 800,
visible: false,
title: '项目信息',
// 当前项目id
currentProjectId: '',
// 基本信息
basicInfo: {},
// 企业信息
enterpriseInfo: {},
// 联系人信息
contactsInfo: {},
columns,
// 到账信息
paymentInfoList: [],
// 开票邮寄信息
logisticsInfoList: [],
// 显示付款信息
showPaymentInfo: false,
// 显示邮寄信息
showMailInfo: false,
// 项目资料列表
fileList: [],
basicLoading: false,
// 项目资料列表的加载状态
fileLoading: false
}
},
computed: {},
components: {
JEllipsis,
PreviewFile,
FileList
},
created() {
console.log('xiangmuxiangqing')
},
methods: {
open(record) {
this.visible = true
// 记录当前项目id
if (this.notId) {
this.currentProjectId = record.projectId
} else {
this.currentProjectId = record.id
}
// 通过id查询项目详情
this.basicLoading = true
queryCommonProjectById({ id: this.currentProjectId }).then(res => {
if (res.success) {
console.log(res.result, 'res.result')
// 项目信息
this.basicInfo = res.result
// 到账信息
this.paymentInfoList = res.result.paymentRecord
// 开票邮寄信息
this.logisticsInfoList = res.result.mailBill
// 拿项目资料信息
if (this.basicInfo.files) {
this.initFileList(this.basicInfo.files)
}
} else {
console.log('未查到相应的信息')
}
}).finally(() => {
this.basicLoading = false
})
},
handleCancel() {
// 清除信息
this.basicInfo = {}
this.enterpriseInfo = {}
this.contactsInfo = {}
this.paymentInfoList = []
this.logisticsInfoList = []
this.visible = false
},
/*
* 生成每一个开票信息
* */
createItemInfo(item) {
let porjectItem = ''
if (item.projects.length > 0) {
item.projects.forEach((val, index) => {
if (index === item.projects.length - 1) {
porjectItem += val
} else {
porjectItem += val + '、'
}
})
}
return `${ item.person }于${ item.time }开票,金额为:${ item.money }元,票号:${ item.piaoNo },项目:${ porjectItem }`
},
/*
* 查看物流
* */
lookLogistics(record) {
const com = Number(record.sendMethod) === 1 && 'ems' || 'shunfeng'
window.open(`https://www.kuaidi100.com/chaxun?com=${ com }&nu=${ record.postNo }`)
},
/*
* 去合同详情 传入合同id
* */
toContractDetail() {
if (this.basicInfo.contractId) {
this.$emit('openContractModule', this.basicInfo.contractId)
this.handleCancel()
} else {
this.$message.warn('该项目未与合同关联')
}
},
/*
* 每一个项目的来款方式不同
* */
createIncomeType(val) {
if (val === 1 || val === 2 || val === 4) {
return '来款方式'
} else {
return '缴费方式'
}
},
/**
* 控制付款信息显隐
*/
viewPaymentInfo() {
this.showPaymentInfo = !this.showPaymentInfo
},
/**
* 控制开票邮寄信息显隐
*/
viewMailInfo() {
this.showMailInfo = !this.showMailInfo
},
/*
* 通过文件id获取文件的相关信息
* */
getFileInfo(id) {
return new Promise(resolve => {
let result = {}
getFileInfo({ id: id }).then(res => {
if (res.success) {
result = res.result
}
}).finally(() => {
resolve(result)
})
})
},
/*
* 获取文件信息
* */
async initFileList(fileIds) {
this.fileLoading = true
if (fileIds) {
const fileList = []
let arr = fileIds.split(',')
for (let i = 0; i < arr.length; i++) {
let fileObj = {}
fileObj = await this.getFileInfo(arr[i])
fileList.push({ fileId: fileObj.id, fileName: fileObj.fileName, createTime: fileObj.createTime })
}
this.fileList = [...fileList]
} else {
this.fileList = []
}
this.fileLoading = false
console.log(this.fileList)
}
}
}
</script>
<style scoped lang="less">
.ant-row {
margin: 0px;
}
h3 {
position: relative;
}
label {
color: #666;
}
.contract-num {
color: #42b983;
cursor: pointer;
}
h3.title::before {
position: absolute;
top: 4px;
left: -10px;
content: "";
height: 20px;
width: 2px;
background: #069f99;
}
/*可收起的标题样式*/
.collapsible-title {
display: flex;
justify-content: space-between;
}
/*基本信息*/
.base-info {
.ant-col {
margin: 3px 0;
}
}
.detail-item {
max-width: 100%;
display: flex;
label {
flex-shrink: 0;
display: block;
}
span {
word-break: break-all;
display: block;
}
}
/* 到账信息 */
.payment-info {
margin-bottom: 14px;
&-box {
border: 1px solid #ccc;
}
&-title {
text-align: center;
font-size: 14px;
height: 35px;
line-height: 35px;
letter-spacing: 1px;
color: #fff;
background: #a2e6e4;
}
&-content {
color: #424242;
//background: #efefef;
padding: 5px;
padding-left: 10px;
//border: 1px solid #ccc;
border-top: none;
}
}
/* 开票邮寄信息 */
.wrap-table {
border: 1px solid #ccc;
border-bottom: none;
}
/deep/ .ant-table-thead {
tr > th {
color: #fff;
background: #a2e6e4;
border: none;
}
}
/deep/ .ant-table-tbody {
tr > td {
border: none;
border-bottom: 1px solid #ccc;
}
}
</style>