[update] 会员管理-成员管理
This commit is contained in:
@@ -2,33 +2,100 @@
|
||||
<div>
|
||||
<page-header-title :is-level-one="false" :level-two-title="$route.query.projectName"></page-header-title>
|
||||
<a-card :bordered="false">
|
||||
<div class="part-title">
|
||||
<div class="part-title-text">标协会员项目信息</div>
|
||||
</div>
|
||||
<!-- 标协会员项目信息区域 -->
|
||||
<a-spin :spinning="spinning">
|
||||
<div class="member-detail">
|
||||
<div class="member-detail-item member-detail-item-small"
|
||||
v-for="(item, index) in detailTitleList"
|
||||
:key="index">
|
||||
<div class="member-detail-item-title">{{ item.title }}:</div>
|
||||
<div class="member-detail-item-content member-detail-item-filename" v-if="item.type === 'file'">
|
||||
<preview-file :file-id="stardsMemberDetail[item.fieldName]"></preview-file>
|
||||
</div>
|
||||
<div class="member-detail-item-content" v-else>{{ stardsMemberDetail[item.fieldName] }}</div>
|
||||
</div>
|
||||
<div class="member-detail-item">
|
||||
<div class="member-detail-item-title">备注:</div>
|
||||
<div class="member-detail-item-content">{{ stardsMemberDetail.remarks }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
|
||||
<a-divider></a-divider>
|
||||
|
||||
<div class="part-title">
|
||||
<div class="part-title-text">标协会员单位信息</div>
|
||||
</div>
|
||||
<!-- 查询区域 -->
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row :gutter="24">
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="企业名称">
|
||||
<a-form-item label="会员单位">
|
||||
<a-input
|
||||
placeholder="请输入企业名称"
|
||||
placeholder="请输入会员单位"
|
||||
v-model="queryParam.companyName"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<span
|
||||
style="float: left; overflow: hidden"
|
||||
class="table-page-search-submitButtons"
|
||||
>
|
||||
<a-button type="primary" @click="searchQuery" icon="search" v-has="'safeguardStardsMember:search'"
|
||||
>查询</a-button
|
||||
>
|
||||
<a-button
|
||||
@click="searchReset"
|
||||
class="reset-button"
|
||||
icon="reload"
|
||||
style="margin-left: 8px"
|
||||
>重置</a-button
|
||||
>
|
||||
<a-form-item label="会员状态">
|
||||
<j-dict-select-tag
|
||||
placeholder="请选择会员状态"
|
||||
v-model="queryParam.companyName"
|
||||
dict-code=""
|
||||
></j-dict-select-tag>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="预估到账日期">
|
||||
<a-range-picker
|
||||
style="width: 100%"
|
||||
v-model="queryParam.estimatedArrivalDate"
|
||||
format="YYYY-MM-DD"
|
||||
:placeholder="['开始时间', '结束时间']"
|
||||
@change="onDateChange"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="是否提票">
|
||||
<j-dict-select-tag
|
||||
placeholder="请选择会员状态"
|
||||
v-model="queryParam.companyName"
|
||||
dict-code="yn"
|
||||
></j-dict-select-tag>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="生效日期">
|
||||
<a-range-picker
|
||||
style="width: 100%"
|
||||
v-model="queryParam.estimatedArrivalDate"
|
||||
format="YYYY-MM-DD"
|
||||
:placeholder="['开始时间', '结束时间']"
|
||||
@change="onDateChange"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<a-form-item label="失效日期">
|
||||
<a-range-picker
|
||||
style="width: 100%"
|
||||
v-model="queryParam.estimatedArrivalDate"
|
||||
format="YYYY-MM-DD"
|
||||
:placeholder="['开始时间', '结束时间']"
|
||||
@change="onDateChange"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||
<span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
|
||||
<a-button type="primary" @click="searchQuery" icon="search" v-has="'safeguardStardsMember:search'">查询</a-button>
|
||||
<a-button @click="searchReset" class="reset-button" icon="reload" style="margin-left: 8px">重置</a-button>
|
||||
</span>
|
||||
</a-col>
|
||||
</a-row>
|
||||
@@ -38,15 +105,15 @@
|
||||
|
||||
<!-- 操作按钮区域 -->
|
||||
<div class="table-operator">
|
||||
<!-- <a-button @click="handleAdd" type="primary" icon="plus">添加</a-button>-->
|
||||
<a-button @click="handleAdd" type="primary" icon="plus">添加</a-button>
|
||||
<a-button
|
||||
type="primary"
|
||||
icon="download"
|
||||
@click="handleExportXls('标协会员')"
|
||||
v-has="'safeguardStardsMember:export'"
|
||||
>导出</a-button
|
||||
>
|
||||
<!-- <a-button type="danger" icon="delete" @click="batchDel">批量删除</a-button>-->
|
||||
v-has="'safeguardStardsMember:export'">
|
||||
导出
|
||||
</a-button>
|
||||
<a-button type="danger" icon="delete" @click="batchDel">批量删除</a-button>
|
||||
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"-->
|
||||
<!-- @change="handleImportExcel">-->
|
||||
<!-- <a-button type="primary" icon="import">导入</a-button>-->
|
||||
@@ -120,6 +187,8 @@
|
||||
</a-table>
|
||||
</div>
|
||||
<project-detail-modal ref="projectDetail"></project-detail-modal>
|
||||
<!-- 标协会员单位信息新增、编辑弹框 -->
|
||||
<safeguard-stards-member-modal ref="modalForm" @ok="modalFormOk" :base-info="stardsMemberDetail"></safeguard-stards-member-modal>
|
||||
</a-card>
|
||||
</div>
|
||||
</template>
|
||||
@@ -132,6 +201,8 @@ import '@/assets/less/TableExpand.less'
|
||||
import StatusSlot from '@comp/tools/StatusSlot'
|
||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||
import { formatMoney } from '@/utils/formatMoney'
|
||||
import PreviewFile from '@/components/jero/PreviewFile'
|
||||
import SafeguardStardsMemberModal from './modules/SafeguardStardsMemberModal'
|
||||
|
||||
export default {
|
||||
name: 'SafeguardStardsMemberList',
|
||||
@@ -139,10 +210,46 @@ export default {
|
||||
components: {
|
||||
ProjectDetailModal,
|
||||
StatusSlot,
|
||||
PageHeaderTitle
|
||||
PageHeaderTitle,
|
||||
PreviewFile,
|
||||
SafeguardStardsMemberModal
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
detailTitleList: [
|
||||
{
|
||||
title: '标协会员项目',
|
||||
fieldName: ''
|
||||
},{
|
||||
title: '运行年份',
|
||||
fieldName: ''
|
||||
}, {
|
||||
title: '负责人',
|
||||
fieldName: ''
|
||||
}, {
|
||||
title: '收费标准',
|
||||
fieldName: ''
|
||||
}, {
|
||||
title: '收费通知号',
|
||||
fieldName: ''
|
||||
}, {
|
||||
title: '收费通知',
|
||||
fieldName: '',
|
||||
type: 'file'
|
||||
}, {
|
||||
title: '理事会收费标准',
|
||||
fieldName: ''
|
||||
}, {
|
||||
title: '理事会收费通知号',
|
||||
fieldName: ''
|
||||
}, {
|
||||
title: '理事会收费通知',
|
||||
fieldName: '',
|
||||
type: 'file'
|
||||
}
|
||||
],
|
||||
stardsMemberDetail: {}, // 会员基本信息
|
||||
spinning: false, // 基本信息的加载
|
||||
columns: [
|
||||
{
|
||||
title: '序号',
|
||||
@@ -161,47 +268,17 @@ export default {
|
||||
scopedSlots: { customRender: 'text' },
|
||||
},
|
||||
{
|
||||
title: '企业名称',
|
||||
title: '会员单位',
|
||||
align: 'center',
|
||||
dataIndex: 'companyName',
|
||||
scopedSlots: { customRender: 'detail' },
|
||||
},
|
||||
{
|
||||
title: '会员类型',
|
||||
align: 'center',
|
||||
dataIndex: 'memberType_dictText',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
},
|
||||
{
|
||||
title: '联系人',
|
||||
title: '会员联系人',
|
||||
align: 'center',
|
||||
dataIndex: 'liaisonMan',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
},
|
||||
{
|
||||
title: '邮箱',
|
||||
align: 'center',
|
||||
dataIndex: 'email',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
},
|
||||
{
|
||||
title: '手机',
|
||||
align: 'center',
|
||||
dataIndex: 'mobile',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
},
|
||||
{
|
||||
title: '会员状态',
|
||||
align: 'center',
|
||||
dataIndex: 'memberStatus_dictText',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
},
|
||||
{
|
||||
title: '注册时间',
|
||||
align: 'center',
|
||||
dataIndex: 'registerTime',
|
||||
scopedSlots: { customRender: 'text' },
|
||||
},
|
||||
{
|
||||
title: '待确收金额',
|
||||
align: 'center',
|
||||
@@ -214,6 +291,12 @@ export default {
|
||||
dataIndex: 'paidAmount',
|
||||
scopedSlots: { customRender: 'allMoney' }
|
||||
},
|
||||
{
|
||||
title: '预估到账日期',
|
||||
align: 'center',
|
||||
dataIndex: 'paidAmount',
|
||||
scopedSlots: { customRender: 'allMoney' }
|
||||
},
|
||||
{
|
||||
title: '打包',
|
||||
align: 'center',
|
||||
@@ -239,11 +322,17 @@ export default {
|
||||
scopedSlots: { customRender: 'status-bill' },
|
||||
},
|
||||
{
|
||||
title: '邮寄',
|
||||
title: '确收',
|
||||
align: 'center',
|
||||
dataIndex: 'mail',
|
||||
scopedSlots: { customRender: 'status-mail' },
|
||||
},
|
||||
{
|
||||
title: '提票',
|
||||
align: 'center',
|
||||
dataIndex: 'mail',
|
||||
scopedSlots: { customRender: 'status-mail' },
|
||||
}
|
||||
],
|
||||
disableMixinCreated: true,
|
||||
url: {
|
||||
@@ -257,7 +346,11 @@ export default {
|
||||
this.loadData(1)
|
||||
},
|
||||
methods: {
|
||||
formatMoney
|
||||
formatMoney,
|
||||
onDateChange (value, dateString) {
|
||||
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
||||
this.queryParam.estimatedArrivalEndDate = dateString[1]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -268,4 +361,35 @@ export default {
|
||||
color: #069f99;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.member-detail {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding-bottom: 20px;
|
||||
|
||||
&-item-small {
|
||||
width: 33.3% !important;
|
||||
}
|
||||
|
||||
&-item {
|
||||
display: flex;
|
||||
padding: 5px 5px;
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
|
||||
&-title {
|
||||
flex-shrink: 0;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
&-content {
|
||||
word-break: break-all;
|
||||
color: #2F3133;
|
||||
}
|
||||
|
||||
&-filename {
|
||||
//cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,627 @@
|
||||
<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="12" :sm="24">
|
||||
<a-form-item
|
||||
label="会员单位"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<company-select
|
||||
placeholder="请选择会员单位"
|
||||
v-decorator="['companyId', validatorRules.companyId]"
|
||||
@change="companyChange"
|
||||
:maxLength="50"
|
||||
:disabled="disabledCompany"
|
||||
>
|
||||
</company-select>
|
||||
</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
|
||||
:selected-company="selectedCompany"
|
||||
:init-contacts="selectPerson"
|
||||
placeholder="请选择企业联系人"
|
||||
@change="changetPerson"
|
||||
v-decorator="[
|
||||
'companyContactId',
|
||||
validatorRules.companyContactId,
|
||||
]"
|
||||
:maxLength="50"
|
||||
ref="selectContacts"
|
||||
@ok="addContactsOk"
|
||||
></select-contacts>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item
|
||||
label="邮寄联系人"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<select-contacts
|
||||
:selected-company="selectedCompany"
|
||||
:init-contacts="selectMailPerson"
|
||||
placeholder="请选择邮寄联系人"
|
||||
v-decorator="['postContactId', validatorRules.postContactId]"
|
||||
:maxLength="50"
|
||||
ref="selectMailContacts"
|
||||
@ok="addContactsOk"
|
||||
></select-contacts>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item
|
||||
label="会员性质"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<j-dict-select-tag
|
||||
placeholder="请选择会员性质"
|
||||
v-decorator="['memberNature', validatorRules.memberNature]"
|
||||
dict-code="member_nature"
|
||||
:triggerChange="true"
|
||||
@change="memberNatureChange"
|
||||
></j-dict-select-tag>
|
||||
</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"
|
||||
>
|
||||
<a-input
|
||||
placeholder="请输入待确收金额"
|
||||
:maxLength="50"
|
||||
@change="changeReceivableAmount"
|
||||
v-decorator="[
|
||||
'amountReceivable',
|
||||
validatorRules.amountReceivable,
|
||||
]"
|
||||
@blur="addZero"
|
||||
></a-input>
|
||||
<span class="yuan">元</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="税率" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-dict-select-tag @change="changeRate" placeholder="请选择税率" dict-code="rate" :trigger-change="true"
|
||||
v-decorator="['taxRate',validatorRules.taxRate]"></j-dict-select-tag>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="税额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-row :gutter="10">
|
||||
<a-col :span="20">
|
||||
<a-input placeholder="请输入税额"
|
||||
v-decorator="['tax',validatorRules.tax]"
|
||||
:maxLength='50'
|
||||
@blur="addZero"
|
||||
read-only
|
||||
disabled
|
||||
@change="(e) => {e.target.value = (e.target.value.replace(/[^0-9.]/g,'')).trim()}"></a-input>
|
||||
</a-col>
|
||||
<a-col :span="1">元</a-col>
|
||||
</a-row>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="未税金额" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-row :gutter="10">
|
||||
<a-col :span="20">
|
||||
<a-input placeholder="请输入未税金额"
|
||||
v-decorator="['noTaxAmount',validatorRules.noTaxAmount]"
|
||||
:maxLength='50'
|
||||
disabled
|
||||
@blur="addZero"
|
||||
read-only
|
||||
@change="(e) => {e.target.value = (e.target.value.replace(/[^0-9.]/g,'')).trim()}"></a-input>
|
||||
</a-col>
|
||||
<a-col :span="1">元</a-col>
|
||||
</a-row>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row>
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item label="预估到账日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<j-date placeholder="请选择预估到账日期"
|
||||
style="width: 100%;"
|
||||
v-decorator="['estimatedArrivalDate', validatorRules.estimatedArrivalDate]"
|
||||
:trigger-change="true"
|
||||
date-format="YYYY-MM-DD"
|
||||
/>
|
||||
</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">
|
||||
<a-form-item
|
||||
label="来款方式"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<a-radio-group
|
||||
v-decorator="['paymentMethod', validatorRules.paymentMethod]"
|
||||
@change="changePaymentMethod"
|
||||
:disabled="isAssociatedContract"
|
||||
>
|
||||
<a-radio :value="1">无</a-radio>
|
||||
<a-radio :value="2">合同</a-radio>
|
||||
<a-radio :value="3">收费通知</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<!-- incomePaysType 2 是合同·-->
|
||||
<a-col :xl="12" :sm="24" v-if="incomePaysType === 2">
|
||||
<a-form-item
|
||||
label="合同号"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<!-- <a-input-->
|
||||
<!-- placeholder="请输入合同号"-->
|
||||
<!-- :maxLength="50"-->
|
||||
<!-- v-decorator="['contractNo', validatorRules.contractNo]"-->
|
||||
<!-- :disabled="isAssociatedContract"-->
|
||||
<!-- @change="-->
|
||||
<!-- (e) => {-->
|
||||
<!-- e.target.value = (e.target.value + '').trim();-->
|
||||
<!-- }-->
|
||||
<!-- "-->
|
||||
<!-- ></a-input>-->
|
||||
<select-revenue-contract
|
||||
:company="selectedCompany"
|
||||
placeholder="请选择合同号"
|
||||
v-decorator="['contractNo', validatorRules.contractNo]"
|
||||
:disabled="isAssociatedContract">
|
||||
</select-revenue-contract>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<!-- incomePaysType 3 是收费通知·-->
|
||||
<a-row :gutter="24" v-if="incomePaysType === 3">
|
||||
<a-col :xl="12" :sm="24">
|
||||
<a-form-item
|
||||
label="收费通知号"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<a-input
|
||||
placeholder="请输入收费通知号"
|
||||
:maxLength="50"
|
||||
v-decorator="['chargeNoticeNo', validatorRules.chargeNoticeNo]"
|
||||
@change="
|
||||
(e) => {
|
||||
e.target.value = (e.target.value + '').trim();
|
||||
}
|
||||
"
|
||||
></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item
|
||||
label="收费通知"
|
||||
:labelCol="labelCol"
|
||||
:wrapperCol="wrapperCol"
|
||||
>
|
||||
<j-upload
|
||||
file-type="pdf"
|
||||
file-type-error-message="请上传收费通知"
|
||||
:multiple="false"
|
||||
:return-id="true"
|
||||
:number="1"
|
||||
v-decorator="['chargeNoticeFileId']"
|
||||
:trigger-change="true"
|
||||
></j-upload>
|
||||
</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>
|
||||
</j-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import JUpload from '@/components/jero/JUpload'
|
||||
import JDate from '@/components/jero/JDate'
|
||||
import JDictSelectTag from '@/components/dict/JDictSelectTag'
|
||||
import CompanySelect from '@/components/company/CompanySelect'
|
||||
import SelectContacts from '@/components/company/SelectContacts'
|
||||
import SelectRevenueContract from '@/components/tools/SelectRevenueContract'
|
||||
import pick from 'lodash.pick'
|
||||
import { addZero } from '@/utils/util'
|
||||
import { money } from '@/utils/validate'
|
||||
import { httpAction } from '@/api/manage'
|
||||
import { MemberNature, IncomeMethod } from '@/enums/commonEnums'
|
||||
import {checkAssociatedProject} from '@/utils/projectCheck'
|
||||
|
||||
export default {
|
||||
name: 'SafeguardStardsMemberModal',
|
||||
components: {
|
||||
JUpload,
|
||||
JDate,
|
||||
JDictSelectTag,
|
||||
CompanySelect,
|
||||
SelectContacts,
|
||||
SelectRevenueContract
|
||||
},
|
||||
props: {
|
||||
// 会员基本信息
|
||||
baseInfo: {
|
||||
type: Object,
|
||||
required: false,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
title: '操作',
|
||||
width: 900,
|
||||
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: 'blur'
|
||||
},
|
||||
contractNo: {
|
||||
rules: [{ required: true, message: '请选择合同号' }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
companyContactId: {
|
||||
rules: [{ required: true, message: '请选择企业联系人' }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
postContactId: {
|
||||
rules: [{ required: true, message: '请选择邮寄联系人' }],
|
||||
validateTrigger: 'change'
|
||||
},
|
||||
memberNature: {
|
||||
rules: [{ required: true, message: '请选择会员性质' }],
|
||||
validateTrigger: ['blur', 'change']
|
||||
},
|
||||
paymentMethod: {
|
||||
rules: [{ required: true, message: '请选择来款方式' }],
|
||||
validateTrigger: ['blur', 'change'],
|
||||
initialValue: 3
|
||||
},
|
||||
// 待确收金额
|
||||
amountReceivable: {
|
||||
rules: [
|
||||
{ required: true, validator: this.validateMoney }
|
||||
],
|
||||
validateTrigger: ['blur']
|
||||
},
|
||||
taxRate: {
|
||||
rules: [{ required: true,message: '请选择税率' }],
|
||||
validateTrigger: 'change',initialValue:'0.06'
|
||||
},
|
||||
chargeNoticeNo: {
|
||||
rules: [{ required: true, message: '请输入收费通知号' }],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
needInvoice: {
|
||||
rules: [{ required: true, message: '请选择发票类型' }],
|
||||
validateTrigger: ['change', 'blur'],
|
||||
initialValue: 0
|
||||
},
|
||||
estimatedArrivalDate: {
|
||||
rules: [{ required: true, message: '请选择预估到账日期' }],
|
||||
validateTrigger: 'change'
|
||||
}
|
||||
},
|
||||
// 来款方式
|
||||
incomePaysType: 3,
|
||||
// 选中的会员单位
|
||||
selectedCompany: null,
|
||||
// 选中的联系人
|
||||
selectPerson: null,
|
||||
// 回显的邮寄联系人
|
||||
selectMailPerson: null,
|
||||
timer: null,
|
||||
url: {
|
||||
add: '/jero/memberProjectSubitem/add',
|
||||
edit: '/jero/memberProjectSubitem/edit'
|
||||
},
|
||||
disabledCompany: false, // 企业是否可以编辑
|
||||
isAssociatedContract: false // 是否已关联合同
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
addZero,
|
||||
add() {
|
||||
this.edit({})
|
||||
},
|
||||
edit(record) {
|
||||
// 清除定时器
|
||||
if (this.timer) {
|
||||
clearTimeout(this.timer)
|
||||
}
|
||||
this.form.resetFields()
|
||||
// 判断企业是否可以编辑,项目来款、开票、邮寄、打包、关联合同后,企业不可更改
|
||||
if (record.id) {
|
||||
// 验证项目是否关联收入合同
|
||||
checkAssociatedProject(record.id).then(res => {
|
||||
this.disabledCompany = this.disabledChargeCompany || res || (!!record.inAccount && record.inAccount !== 0) || (!!record.makeInvoice && record.makeInvoice !== 0) || (!!record.mail && record.mail !== 0)
|
||||
this.isAssociatedContract = res
|
||||
})
|
||||
} else {
|
||||
this.disabledCompany = this.disabledChargeCompany
|
||||
}
|
||||
|
||||
// 合同作废后合同号是null,这里置为undefined
|
||||
record.contractNo = record.contractNo || undefined
|
||||
this.model = Object.assign({}, record)
|
||||
// 编辑状态下的企业与联系人的回显
|
||||
if (record.companyId) {
|
||||
this.model.companyId = {
|
||||
id: record.companyId,
|
||||
companyName: record.companyName
|
||||
}
|
||||
this.selectedCompany = Object.assign({}, this.model.companyId)
|
||||
this.selectPerson = {
|
||||
id: this.model.companyContactTemporaryId,
|
||||
name: this.model.companyContactName
|
||||
}
|
||||
this.selectMailPerson = {
|
||||
id: this.model.postContactTemporaryId,
|
||||
name: this.model.postContactName
|
||||
}
|
||||
// 修改来款方式 控制dom对应显示隐藏
|
||||
this.incomePaysType = record.paymentMethod
|
||||
}
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.form.setFieldsValue(
|
||||
pick(
|
||||
this.model,
|
||||
'companyId',
|
||||
'companyContactId',
|
||||
'postContactId',
|
||||
'amountReceivable',
|
||||
'taxRate',
|
||||
'tax',
|
||||
'noTaxAmount',
|
||||
'estimatedArrivalDate',
|
||||
'needInvoice',
|
||||
'paymentMethod',
|
||||
'contractNo',
|
||||
'chargeNoticeNo',
|
||||
'chargeNoticeFileId',
|
||||
'remark'
|
||||
)
|
||||
)
|
||||
// 查找企业联系人,找不到就置空
|
||||
this.$refs.selectContacts.getContactsList().finally(() => {
|
||||
if (!this.$refs.selectContacts.contactsList.find(item => item.id === this.model.companyContactId)) {
|
||||
this.form.setFieldsValue({ companyContactId: undefined })
|
||||
}
|
||||
})
|
||||
// 查找邮寄联系人,找不到就置空
|
||||
this.$refs.selectMailContacts.getContactsList().finally(() => {
|
||||
if (!this.$refs.selectMailContacts.contactsList.find(item => item.id === this.model.postContactId)) {
|
||||
this.form.setFieldsValue({ postContactId: undefined })
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
validateMoney(rule, value, callback) {
|
||||
if (value === undefined || value === '' || value === null) {
|
||||
callback('请输入待确收金额')
|
||||
}
|
||||
if (value && money(value)) {
|
||||
callback()
|
||||
} else {
|
||||
callback('请输入合法的金额数字,最多2位小数,10位整数')
|
||||
}
|
||||
},
|
||||
// 会员性质改变
|
||||
memberNatureChange (value) {
|
||||
if (value === MemberNature.viceChairmanUnit.value) {
|
||||
// 是副理事长单位, 带出会员信息的理事会收费标准、理事会收费通知号、理事会收费通知作为待确收金额,收费通知号,收费通知
|
||||
this.form.setFieldsValue({
|
||||
amountReceivable: this.baseInfo.amountReceivable
|
||||
})
|
||||
// 来款方式是收费通知,带出会员信息的理事会收费通知号、理事会收费通知作为收费通知号,收费通知
|
||||
if (this.form.getFieldValue('incomePaysType') === IncomeMethod.noticeOfCharge.value) {
|
||||
this.form.setFieldsValue({
|
||||
chargeNoticeFileId: this.baseInfo.chargeNoticeFileId,
|
||||
chargeNoticeNo: this.baseInfo.chargeNoticeNo
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// 是历史单位或者会员单位, 带出会员信息的收费标准、收费通知号、收费通知作为待确收金额,收费通知号,收费通知
|
||||
this.form.setFieldsValue({
|
||||
amountReceivable: this.baseInfo.amountReceivable
|
||||
})
|
||||
// 来款方式是收费通知,带出会员信息的收费通知号、收费通知作为收费通知号,收费通知
|
||||
if (this.form.getFieldValue('incomePaysType') === IncomeMethod.noticeOfCharge.value) {
|
||||
this.form.setFieldsValue({
|
||||
chargeNoticeFileId: this.baseInfo.chargeNoticeFileId,
|
||||
chargeNoticeNo: this.baseInfo.chargeNoticeNo
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
// 选择企业联系人 带出邮寄联系人
|
||||
changetPerson(val) {
|
||||
// 只有邮寄联系人没有值的时候才去联动复制
|
||||
if (this.form.getFieldValue('postContactId') === undefined) {
|
||||
this.form.setFieldsValue({ 'postContactId': val })
|
||||
}
|
||||
},
|
||||
close() {
|
||||
this.incomePaysType = 3
|
||||
this.$emit('close')
|
||||
this.disabledCompany = false
|
||||
this.isAssociatedContract = false
|
||||
this.visible = false
|
||||
|
||||
clearTimeout(this.timer)
|
||||
},
|
||||
handleOk() {
|
||||
const that = this
|
||||
// 触发表单验证
|
||||
this.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
that.confirmLoading = true
|
||||
let httpurl = ''
|
||||
if (!this.model.id) {
|
||||
httpurl += this.url.add
|
||||
} else {
|
||||
httpurl += this.url.edit
|
||||
}
|
||||
const formData = Object.assign(this.model, values)
|
||||
formData.companyId = values.companyId.id
|
||||
formData.projectId = this.$store.state.currentProjetcInfo.id
|
||||
httpAction(httpurl, formData, 'post')
|
||||
.then((res) => {
|
||||
if (res.success) {
|
||||
that.$message.success(res.message)
|
||||
that.$emit('ok')
|
||||
that.confirmLoading = false
|
||||
that.close()
|
||||
} else {
|
||||
that.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
that.confirmLoading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
/*
|
||||
* 来款方式
|
||||
* */
|
||||
changePaymentMethod(e) {
|
||||
this.incomePaysType = e.target.value
|
||||
},
|
||||
/*
|
||||
* 选择会员单位
|
||||
* */
|
||||
companyChange(val) {
|
||||
// 当前选中的企业和之前选中的企业一致,就不修改了
|
||||
if (this.selectedCompany && val && this.selectedCompany.id === val.id) {
|
||||
return
|
||||
}
|
||||
// 清除合同号
|
||||
this.form.setFieldsValue({ contractNo: undefined })
|
||||
this.selectedCompany = Object.assign({}, val)
|
||||
|
||||
// 切换企业清空两个联系人
|
||||
this.form.setFieldsValue({
|
||||
companyContactId: undefined,
|
||||
postContactId: undefined
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
this.selectedCompany = null
|
||||
this.close()
|
||||
},
|
||||
/*
|
||||
* 筛选
|
||||
* */
|
||||
filterOption(input, option) {
|
||||
console.log('inp', option)
|
||||
},
|
||||
/*
|
||||
* 新增联系人后刷新下拉框数据
|
||||
* */
|
||||
addContactsOk() {
|
||||
this.$refs.selectContacts.getContactsList()
|
||||
this.$refs.selectMailContacts.getContactsList()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.yuan {
|
||||
position: absolute;
|
||||
right: -20px;
|
||||
top: -10px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user