[update] -去掉银行账户只能输入数字的限制;财务管理-到账开票-审核 的时候增加 用户提交的 付款发票信息
This commit is contained in:
@@ -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--pdf;3--没有凭证 -->
|
||||
<!-- proofType处理过的缴费凭证类型:img--图片;pdf--pdf;none--无缴费凭证 -->
|
||||
<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--pdf;3--没有凭证
|
||||
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>
|
||||
|
||||
Reference in New Issue
Block a user