[update] -去掉银行账户只能输入数字的限制;财务管理-到账开票-审核 的时候增加 用户提交的 付款发票信息

This commit is contained in:
fengchenchen
2022-05-09 16:19:22 +08:00
parent e71c54c10b
commit 4372760bbc
3 changed files with 262 additions and 40 deletions
+6 -1
View File
@@ -111,6 +111,9 @@ const updateInternalEnterprise = (param) => postAction('/company/payCompanyManag
// 判断当前企业是否是内部企业
const judgeInternalEnterprise = (param) => getAction('/company/payCompanyManagement/getInternalEnterprise', param)
// 更新会员系统 会员缴费、证书缴费的发票信息
const incomingUpdatePayment = (param) => postAction('/member/tbMemberProjectSubitem/incomingUpdatePayment', param)
export {
getWorkingGroupById,
getChargeNotice,
@@ -166,5 +169,7 @@ export {
queryMailDetailById,
updateInternalEnterprise,
judgeInternalEnterprise
judgeInternalEnterprise,
incomingUpdatePayment
}
@@ -172,7 +172,7 @@ export default {
validateTrigger: 'blur'
},
bankAccount: {
rules: [{ required: true, validator: this.checkBankAccount }],
rules: [{ required: true, message: '请输入银行账户' }],
validateTrigger: 'blur'
},
dutyCode: {
@@ -379,4 +379,4 @@ export default {
cursor: pointer;
}
}
</style>
</style>
@@ -16,23 +16,34 @@
<a-form :form="form">
<h3 class="title">凭证信息</h3>
<div>
<div class="info-item">
<label>缴费金额</label>
<div class="basic-info-div">
<a-form-item label="缴费金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<div>{{ proofInfo.amountReceived }}</div>
</div>
<div class="info-item">
<label>缴费日期</label>
</a-form-item>
<a-form-item label="缴费日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
<div>{{ proofInfo.paymentDate }}</div>
</div>
<div class="info-item">
<label>申请人</label>
</a-form-item>
<a-form-item label="申请人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<div>{{ proofInfo.applicantName }}</div>
</div>
</a-form-item>
<!-- <div class="info-item">-->
<!-- <label>缴费金额</label>-->
<!-- <div>{{ proofInfo.amountReceived }}</div>-->
<!-- </div>-->
<!-- <div class="info-item">-->
<!-- <label>缴费日期</label>-->
<!-- <div>{{ proofInfo.paymentDate }}</div>-->
<!-- </div>-->
<!-- <div class="info-item">-->
<!-- <label>申请人</label>-->
<!-- <div>{{ proofInfo.applicantName }}</div>-->
<!-- </div>-->
<!-- 标协会员证书的缴费凭证类型根据paymentMethod字段决定1--图片2--pdf3--没有凭证 -->
<!-- proofType处理过的缴费凭证类型img--图片pdf--pdfnone--无缴费凭证 -->
<div class="info-item">
<label>{{proofType==='pdf' ? '打包协议' : '缴费凭证'}}</label>
<!-- <div class="info-item">-->
<a-form-item class="proof-form-item" :label="proofType==='pdf' ? '打包协议' : '缴费凭证'" :labelCol="labelCol" :wrapperCol="wrapperCol">
<!-- <label>{{proofType==='pdf' ? '打包协议' : '缴费凭证'}}</label>-->
<div class="proof-img" v-if="proofType === 'img'">
<template v-if="proofInfo.proof && proofInfo.proof !== ''">
<div class="proof-img-item" v-for="(item, index) in proofInfo.proof.split(',')" :key="index">
@@ -44,7 +55,8 @@
<preview-file :fileId="proofInfo.proof"></preview-file>
</div>
<span v-if="proofType==='none'"></span>
</div>
</a-form-item>
<!-- </div>-->
<a-form-item label="备注" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-textarea
placeholder="请输入备注"
@@ -54,7 +66,89 @@
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</div>
<!-- 当前的缴费凭证是否是标协会员证书缴费 时展示 付款信息用户财务人员核实 -->
<template v-if="model.projectType && (model.projectType.toString() === '5' || model.projectType.toString() === '6')">
<h3 class="title">付款信息</h3>
<div class="pay-info-div">
<a-row>
<a-col :span="12">
<a-form-item label="发票" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
<j-dict-select-tag
@change="invoiceRequirementsChange"
type="list"
v-decorator="['invoiceRequirements',{ rules: validatorRules.invoiceRequirements.rules, initialValue:proofInfo.invoiceRequirements, validateTrigger: 'change'},]"
:trigger-change="true"
dictCode="invoice_type"
placeholder="请选择发票" />
</a-form-item>
</a-col>
</a-row>
<a-row v-if="currentSelectInvoiceType">
<a-col :span="12">
<a-form-item label="关联付款发票名称" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
<a-input
v-decorator="['headerName',{ rules: validatorRules.headerName.rules, validateTrigger: 'blur',initialValue:proofInfo.headerName}]"
:trigger-change="true"
@change="event => event.target.value = event.target.value.trim()"
placeholder="请输入关联付款发票名称"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="社会统一代码/税号" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
<a-input
@change="event => event.target.value = event.target.value.trim()"
v-decorator="['taxNumber',{ rules: validatorRules.taxNumber.rules, validateTrigger: 'blur', initialValue:proofInfo.taxNumber},]"
placeholder="请输入社会统一代码/税号"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
<template v-if="currentSelectInvoiceType === 2">
<a-row>
<a-col :span="12">
<a-form-item label="单位地址" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
<a-input
@change="event => event.target.value = event.target.value.trim()"
v-decorator="['invoiceAddress',{ rules: validatorRules.invoiceAddress.rules, validateTrigger: 'blur', initialValue:proofInfo.invoiceAddress}]"
placeholder="请输入单位地址"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="电话号码" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
<a-input
v-decorator="['invoicePhone',{ rules: validatorRules.invoicePhone.rules, validateTrigger: 'blur', initialValue:proofInfo.invoicePhone}]"
:trigger-change="true"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9|-]/g,'')}"
placeholder="请输入电话号码"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col :span="12">
<a-form-item label="开户银行" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
<a-input
@change="event => event.target.value = event.target.value.trim()"
v-decorator="['depositBank',{ rules: validatorRules.depositBank.rules, validateTrigger: 'blur', initialValue:proofInfo.depositBank}]"
placeholder="请输入开户银行"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="银行账户" :labelCol="labelPayCol" :wrapperCol="wrapperPayCol">
<a-input
@change="(e) => {e.target.value = e.target.value.trim()}"
v-decorator="['bankAccount',{ rules: validatorRules.bankAccount.rules, validateTrigger: 'blur', initialValue:proofInfo.bankAccount}]"
placeholder="请输入银行账户"
:maxLength="50"></a-input>
</a-form-item>
</a-col>
</a-row>
</template>
</div>
</template>
<h3 class="title">审核</h3>
<div>
<a-form-item label="审核人" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -91,10 +185,26 @@ import pick from 'lodash.pick'
import { postAction } from '../../../../api/manage'
import Vue from 'vue'
import { USER_INFO } from '../../../../store/mutation-types'
import { getLastProofInfo, getStanderMemberLastProofInfo, getCertificateLastProofInfo } from '../../../../api/incomePaymentsApi'
import { getLastProofInfo, getStanderMemberLastProofInfo, getCertificateLastProofInfo, incomingUpdatePayment } from '../../../../api/incomePaymentsApi'
import PreviewFile from '../../../../components/jero/PreviewFile.vue'
import PreviewImgModal from '@/components/PreviewImgModal'
const labelCol = {
xs: {span: 24},
sm: {span: 3}
}
const wrapperCol = {
xs: {span: 24},
sm: {span: 21}
}
const labelPayCol = {
sm: {span: 4}
}
const wrapperPayCol = {
sm: {span: 20}
}
export default {
name: 'AuditProofModule',
components: { PreviewFile, PreviewImgModal },
@@ -106,13 +216,15 @@ export default {
confirmLoading: false,
form: this.$form.createForm(this),
model: {},
labelCol: {
labelCol,
wrapperCol,
labelPayCol: {
xs: { span: 24 },
sm: { span: 3 }
sm: { span: 8 }
},
wrapperCol: {
wrapperPayCol: {
xs: { span: 24 },
sm: { span: 21 }
sm: { span: 16 }
},
validatorRules: {
reviewerName: {
@@ -126,7 +238,35 @@ export default {
reviewInstructions: {
rules: [{ required: true, message: '请输入说明' }],
validateTrigger: 'blur'
}
},
invoiceRequirements: {
rules: [{
required: true, message: '请选择发票'
}]
},
// 会员发票信息的回显
headerName: {
rules: [
{ required: true, message: '请输入付款单位发票抬头', validateTrigger: 'blur' },
{ min: 1, max: 50, message: '长度不超过50个字符' }
],
validateTrigger: 'blur'
},
taxNumber: {
rules: [
{ required: true, message: '请输入社会统一代码/税号', validateTrigger: 'blur' },
{
pattern: /^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/,
message: '请输入15位、18位的社会统一代码/税号'
}
],
validateTrigger: 'blur'
},
invoiceAddress: { rules: [{ required: true, message: '请输入单位地址' }], validateTrigger: 'blur' },
invoicePhone: { rules: [{ required: true, validator: this.handleInvoicePhoneCheck }], validateTrigger: 'blur' },
depositBank: { rules: [{ required: true, message: '请输入开户银行' }], validateTrigger: 'blur' },
bankAccount: { rules: [{ required: true, message: '请输入银行账户' }], validateTrigger: 'blur' }
},
// 项目缴费凭证信息
proofInfo: {},
@@ -134,11 +274,25 @@ export default {
showInstructions: false,
auditUrl: '/paymentCheck/payPaymentCheck/check',
// 缴费凭证的类型,默认为img,标协会员、证书根据paymentMethod字段决定:1--图片;2--pdf3--没有凭证
proofType: 'img'
proofType: 'img',
// 标协会员、证书缴费 使用-发票选择
invoiceRequirementsFlag: false,
// 标协会员、证书缴费 使用-当前选择是否需要发票的值,用于dom的判断 0-无 1-普通发票 2-增值税发票
currentSelectInvoiceType: 0,
}
},
methods: {
async open(record) {
if(record.projectType.toString() === '5' || record.projectType.toString() === '6') {
// 会员缴费、证书缴费 模态框调整宽度
this.width = 1000
this.labelCol = labelPayCol
this.wrapperCol = wrapperPayCol
} else {
this.labelCol = labelCol
this.wrapperCol = wrapperCol
this.width = 600
}
let flag = await this.getProofInfo(record)
if(!flag){
this.$message.warn('项目已审核')
@@ -198,13 +352,22 @@ export default {
return new Promise(resolve => {
httpMethod(param).then(res => {
if (res.success && res.result !== '无数据') {
this.proofInfo = res.result
this.proofInfo = res.result || {}
// 标协会员、证书的缴费凭证文件、缴费金额、缴费日期、申请人字段和普通项目、工作组项目、资料网员的不一致
if (record.projectType.toString() === '5' || record.projectType.toString() === '6') {
this.proofInfo.proof = res.result.paymentRecord
this.proofInfo.amountReceived = res.result.amountReceivable
this.proofInfo.paymentDate = res.result.submissionTime
this.proofInfo.applicantName = res.result.liaisonMan
this.currentSelectInvoiceType = Number(res.result.invoiceRequirements)
if(this.currentSelectInvoiceType) {
this.invoiceRequirementsFlag = false
} else {
this.invoiceRequirementsFlag = true
}
this.$nextTick(() => {
this.form.setFieldsValue(pick(res.result, 'invoiceRequirements', 'headerName', 'taxNumber', 'invoiceAddress', 'invoicePhone', 'depositBank', 'bankAccount'))
})
}
this.getProofType(record)
resolve(true)
@@ -216,12 +379,26 @@ export default {
}
},
updateMemberPaymentInfo(params) {
return new Promise(resolve => {
let isSuccess = false
incomingUpdatePayment(params).then(res => {
if(res.success) {
isSuccess = true
} else {
this.$message.warn(res.message)
}
}).finally(() => {
resolve(isSuccess)
})
})
},
handleOk() {
if (this.confirmLoading) {
return
}
this.confirmLoading = true
this.form.validateFields((err, values) => {
this.form.validateFields(async (err, values) => {
if (!err) {
values.projectId = this.model.id
values.projectType = this.model.projectType
@@ -230,6 +407,17 @@ export default {
values.reviewInstructions = null
}
const formData = Object.assign(this.proofInfo, values)
console.log(formData)
// 标协会员缴费、证书缴费 需要先调用 编辑的接口,编辑成功后在调用审核的接口
if(this.proofInfo.projectType + '' === '5' || this.proofInfo.projectType + '' === '6') {
let updateResult = await this.updateMemberPaymentInfo(formData)
if(!updateResult) {
setTimeout(() => {
this.confirmLoading = false
}, 1000)
return
}
}
postAction(this.auditUrl, formData).then(res => {
if (res.success) {
this.$message.success(res.message)
@@ -278,7 +466,31 @@ export default {
this.$refs.previewImg.title = '缴费凭证'
this.$refs.previewImg.imgId = imgId
this.$refs.previewImg.visible = true
}
},
/*
* 验证发票信息-电话号码 的正确性
* */
handleInvoicePhoneCheck(rule, value, callback) {
const reg = /^((13[0-9])|(14[579])|(15([0-3]|[5-9]))|(17[0135678])|(18[0-9])|(19[8|9])|(16[6]))\d{8}$|^([0-9]{3,4}-)[0-9]{7,8}$/
if (!value) {
callback(new Error('请输入电话号码'))
}
if (value && !reg.test(value)) {
callback(new Error('请输入正确格式的电话号码'))
} else {
callback()
}
},
/* 选择发票*/
invoiceRequirementsChange(value) {
this.currentSelectInvoiceType = Number(value)
// 0 代表发票选择无
if (this.currentSelectInvoiceType === 0) {
this.invoiceRequirementsFlag = false
} else {
this.invoiceRequirementsFlag = true
}
},
}
}
</script>
@@ -324,20 +536,25 @@ h3.title::before {
div {
color: black;
}
}
// 将缴费凭证的图片部分提出
.proof-img {
display: flex;
width:calc(100% - 4rem);
.proof-img {
display: flex;
width:calc(100% - 4rem);
&-item {
width: 50%;
img {
max-width: 100%;
max-height: 150px;
cursor: pointer;
}
&-item {
width: 50%;
img {
max-width: 100%;
max-height: 150px;
cursor: pointer;
}
}
}
</style>
// 修改缴费基础信息的样式
.basic-info-div{
/deep/.ant-form-item:not(.proof-form-item){
margin-bottom: 0;
}
}
</style>