Files
income_payments_client/src/views/contractManagement/revenueContract/modules/AddMemberProject.vue
T

269 lines
9.2 KiB
Vue

<template>
<j-modal
:title="title"
:width="width"
:visible="visible"
:confirmLoading="confirmLoading"
switchFullscreen
@ok="handleOk"
@cancel="handleCancel"
cancelText="关闭">
<a-spin :spinning="confirmLoading">
<a-form :form="form">
<a-row :gutter="24">
<a-col :xl="24" :sm="24">
<a-form-item label="会员项目" :labelCol=" {xs: {span: 24},sm: {span: 3}}"
:wrapperCol="{ xs: {span: 24},sm: {span: 21}}">
<a-input placeholder="请输入会员项目"
v-decorator="['projectName',validatorRules.projectName]"
:maxLength='50'
@change="e => {e.target.value = (e.target.value + '').trim()}"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xl="12" :sm="24">
<a-form-item label="会员企业" :labelCol="labelCol" :wrapperCol="wrapperCol">
<company-select placeholder="请选择会员企业" disabled v-decorator="['companyId',validatorRules.companyId]"></company-select>
</a-form-item>
</a-col>
<a-col :xl="12" :sm="24">
<a-form-item label="企业联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts placeholder="请选择企业联系人"
:selected-company="contractInfo.companyId"
:init-contacts="selectContact"
v-decorator="['companyContactId',validatorRules.companyContactId]"></select-contacts>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xl="12" :sm="24">
<a-form-item label="邮寄联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
<select-contacts placeholder="请选择邮寄联系人"
:selected-company="contractInfo.companyId"
:init-contacts="selectContact"
v-decorator="['postContactId', validatorRules.postContactId]"></select-contacts>
</a-form-item>
</a-col>
<a-col :xl="12" :sm="24">
<a-form-item label="应收金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入应收金额" v-decorator="['amountReceivable',validatorRules.amountReceivable]"
@change="(e) => {e.target.value = e.target.value.replace(/[^0-9.]/g,'')}"></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xl="12" :sm="24">
<a-form-item label="来款用途" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag :triggerChange="true" dictCode="payment_charge_use"
disabled
v-decorator="['chargeUse', validatorRules.chargeUse]"
placeholder="请选择来款用途"></j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :xl="12" :sm="24">
<a-form-item label="需要发票" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
v-decorator="['needInvoice', validatorRules.needInvoice]"
:triggerChange="true"
placeholder="请输入发票类型"
dictCode="invoice_type"
/>
</a-form-item>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :xl="12" :sm="24">
<!--paymentMethod-->
<a-form-item label="来款方式" :labelCol="labelCol" :wrapperCol="wrapperCol">
<span>合同</span>
</a-form-item>
</a-col>
<a-col :xl="12" :sm="24">
<a-form-item label="合同编号" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input placeholder="请输入合同编号" @change="event => event.target.value = event.target.value.trim()"
:maxLength="50" v-decorator="['contractNum',validatorRules.contractNum]" disabled></a-input>
</a-form-item>
</a-col>
</a-row>
<a-row>
<a-col>
<a-form-item label="备注" :labelCol="remarksLabelCol" :wrapperCol="remarksWrapperCol">
<a-textarea
placeholder="请输入备注"
:auto-size="{ minRows: 3, maxRows: 6 }"
:maxLength='200'
v-decorator="['remark']"
@change="e => {e.target.value = (e.target.value + '').trim()}"/>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-spin>
<template slot="footer">
<a-button @click="handleCancel">关闭</a-button>
<a-button @click="handleOk" type="primary" v-preventclick>确定</a-button>
</template>
</j-modal>
</template>
<script>
import pick from 'lodash.pick'
import {httpAction} from '@api/manage'
import SelectContacts from '@comp/company/SelectContacts'
import JDictSelectTag from '@comp/dict/JDictSelectTag'
import CompanySelect from '@comp/company/CompanySelect'
import {money} from '@/utils/validate'
export default {
name: 'AddMemberProject',
components: {
SelectContacts,
JDictSelectTag,
CompanySelect
},
data() {
return {
title: '新增会员项目',
width: 800,
visible: false,
confirmLoading: false,
form: this.$form.createForm(this),
model: {},
labelCol: {
xs: {span: 24},
sm: {span: 6}
},
wrapperCol: {
xs: {span: 24},
sm: {span: 18}
},
remarksLabelCol: {
xs: {span: 24},
sm: {span: 3}
},
remarksWrapperCol: {
xs: {span: 24},
sm: {span: 21}
},
validatorRules: {
companyId: {
rules: [{ required: true, message: '请选择会员单位' }],
validateTrigger: 'change',
},
contractNo: {
rules: [{ required: true, message: '请输入合同号' }],
validateTrigger: 'blur',
},
companyContactId: {
rules: [{ required: true, message: '请选择企业联系人' }],
validateTrigger: 'blur',
},
postContactId: {
rules: [{ required: true, message: '请选择邮寄联系人' }],
validateTrigger: 'blur',
},
amountReceivable: {
rules: [{ required: true, validator:this.validateMoney }],
validateTrigger: 'blur',
},
needInvoice: {
rules: [{ required: true, message: '请选择发票类型' }],
validateTrigger: ['change', 'blur'],
},
contractNum:{
rules: [{ required: true, message: '请输入合同编号' }],
validateTrigger: ['blur'],
},
chargeUse: {
rules: [{ required: true, message: '请选择来款用途' }],
validateTrigger: 'change',
initialValue: 2,
},
},
url: {
add: '',
edit: '',
},
// 合同信息
contractInfo:{},
// 联系人回显
selectContact:null,
}
},
methods: {
open(record) {
this.form.resetFields()
this.visible = true
console.log(record)
this.contractInfo = Object.assign({},record)
// 会员企业的默认显示
this.contractInfo.companyId = record.signedCompany
// 联系人默认显示
this.contractInfo.companyContactId = record.signedContactsTemporaryId
// 邮寄联系人显示
this.contractInfo.postContactId = record.signedContactsTemporaryId
// 合同编号显示
this.contractInfo.contractNum = record.contractNum
this.selectContact = {
id:record.signedContactsTemporaryId,
name:record.signedContactsTemporaryName
}
this.$nextTick( () => {
this.form.setFieldsValue(pick(this.contractInfo,'companyId','companyContactId','postContactId','contractNum'))
})
},
close() {
this.visible = false
},
handleOk() {
const that = this
this.form.validateFields((err, values) => {
if(!err){
that.confirmLoading = true
let method = 'post'
let url = this.url.add
const formData = Object.assign({},values)
// 来款方式默认是合同
formData.paymentMethod = 2
httpAction(url,formData,method).then(res => {
if(res.success){
that.$message.success(res.message)
that.$emit('ok')
that.handleCancel()
that.confirmLoading = false
}else {
this.$message.warn(res.message)
}
}).finally( () => {
that.confirmLoading = false
})
}
})
},
handleCancel() {
this.close()
},
/*
* 校验应收金额
* */
validateMoney(rule,value,callback){
if(value === '' || value === undefined || value === null){
callback('请输入应收金额')
}
if(value && money(value)){
callback()
}else {
callback('请输入合法的金额数字,最多2位小数,10位正数')
}
}
}
}
</script>
<style scoped lang="less">
</style>