[update] 会员管理-成员管理
This commit is contained in:
@@ -2,33 +2,100 @@
|
|||||||
<div>
|
<div>
|
||||||
<page-header-title :is-level-one="false" :level-two-title="$route.query.projectName"></page-header-title>
|
<page-header-title :is-level-one="false" :level-two-title="$route.query.projectName"></page-header-title>
|
||||||
<a-card :bordered="false">
|
<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">
|
<div class="table-page-search-wrapper">
|
||||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
<a-form-item label="企业名称">
|
<a-form-item label="会员单位">
|
||||||
<a-input
|
<a-input
|
||||||
placeholder="请输入企业名称"
|
placeholder="请输入会员单位"
|
||||||
v-model="queryParam.companyName"
|
v-model="queryParam.companyName"
|
||||||
></a-input>
|
></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
<span
|
<a-form-item label="会员状态">
|
||||||
style="float: left; overflow: hidden"
|
<j-dict-select-tag
|
||||||
class="table-page-search-submitButtons"
|
placeholder="请选择会员状态"
|
||||||
>
|
v-model="queryParam.companyName"
|
||||||
<a-button type="primary" @click="searchQuery" icon="search" v-has="'safeguardStardsMember:search'"
|
dict-code=""
|
||||||
>查询</a-button
|
></j-dict-select-tag>
|
||||||
>
|
</a-form-item>
|
||||||
<a-button
|
</a-col>
|
||||||
@click="searchReset"
|
<a-col :xl="6" :lg="7" :md="8" :sm="24">
|
||||||
class="reset-button"
|
<a-form-item label="预估到账日期">
|
||||||
icon="reload"
|
<a-range-picker
|
||||||
style="margin-left: 8px"
|
style="width: 100%"
|
||||||
>重置</a-button
|
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>
|
</span>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
@@ -38,15 +105,15 @@
|
|||||||
|
|
||||||
<!-- 操作按钮区域 -->
|
<!-- 操作按钮区域 -->
|
||||||
<div class="table-operator">
|
<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
|
<a-button
|
||||||
type="primary"
|
type="primary"
|
||||||
icon="download"
|
icon="download"
|
||||||
@click="handleExportXls('标协会员')"
|
@click="handleExportXls('标协会员')"
|
||||||
v-has="'safeguardStardsMember:export'"
|
v-has="'safeguardStardsMember:export'">
|
||||||
>导出</a-button
|
导出
|
||||||
>
|
</a-button>
|
||||||
<!-- <a-button type="danger" icon="delete" @click="batchDel">批量删除</a-button>-->
|
<a-button type="danger" icon="delete" @click="batchDel">批量删除</a-button>
|
||||||
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"-->
|
<!-- <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl"-->
|
||||||
<!-- @change="handleImportExcel">-->
|
<!-- @change="handleImportExcel">-->
|
||||||
<!-- <a-button type="primary" icon="import">导入</a-button>-->
|
<!-- <a-button type="primary" icon="import">导入</a-button>-->
|
||||||
@@ -120,6 +187,8 @@
|
|||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
<project-detail-modal ref="projectDetail"></project-detail-modal>
|
<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>
|
</a-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -132,6 +201,8 @@ import '@/assets/less/TableExpand.less'
|
|||||||
import StatusSlot from '@comp/tools/StatusSlot'
|
import StatusSlot from '@comp/tools/StatusSlot'
|
||||||
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
import PageHeaderTitle from '@comp/layouts/PageHeaderTitle'
|
||||||
import { formatMoney } from '@/utils/formatMoney'
|
import { formatMoney } from '@/utils/formatMoney'
|
||||||
|
import PreviewFile from '@/components/jero/PreviewFile'
|
||||||
|
import SafeguardStardsMemberModal from './modules/SafeguardStardsMemberModal'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SafeguardStardsMemberList',
|
name: 'SafeguardStardsMemberList',
|
||||||
@@ -139,10 +210,46 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
ProjectDetailModal,
|
ProjectDetailModal,
|
||||||
StatusSlot,
|
StatusSlot,
|
||||||
PageHeaderTitle
|
PageHeaderTitle,
|
||||||
|
PreviewFile,
|
||||||
|
SafeguardStardsMemberModal
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
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: [
|
columns: [
|
||||||
{
|
{
|
||||||
title: '序号',
|
title: '序号',
|
||||||
@@ -161,47 +268,17 @@ export default {
|
|||||||
scopedSlots: { customRender: 'text' },
|
scopedSlots: { customRender: 'text' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '企业名称',
|
title: '会员单位',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'companyName',
|
dataIndex: 'companyName',
|
||||||
scopedSlots: { customRender: 'detail' },
|
scopedSlots: { customRender: 'detail' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '会员类型',
|
title: '会员联系人',
|
||||||
align: 'center',
|
|
||||||
dataIndex: 'memberType_dictText',
|
|
||||||
scopedSlots: { customRender: 'text' },
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '联系人',
|
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'liaisonMan',
|
dataIndex: 'liaisonMan',
|
||||||
scopedSlots: { customRender: 'text' },
|
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: '待确收金额',
|
title: '待确收金额',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
@@ -214,6 +291,12 @@ export default {
|
|||||||
dataIndex: 'paidAmount',
|
dataIndex: 'paidAmount',
|
||||||
scopedSlots: { customRender: 'allMoney' }
|
scopedSlots: { customRender: 'allMoney' }
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '预估到账日期',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'paidAmount',
|
||||||
|
scopedSlots: { customRender: 'allMoney' }
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: '打包',
|
title: '打包',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
@@ -239,11 +322,17 @@ export default {
|
|||||||
scopedSlots: { customRender: 'status-bill' },
|
scopedSlots: { customRender: 'status-bill' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '邮寄',
|
title: '确收',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'mail',
|
dataIndex: 'mail',
|
||||||
scopedSlots: { customRender: 'status-mail' },
|
scopedSlots: { customRender: 'status-mail' },
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: '提票',
|
||||||
|
align: 'center',
|
||||||
|
dataIndex: 'mail',
|
||||||
|
scopedSlots: { customRender: 'status-mail' },
|
||||||
|
}
|
||||||
],
|
],
|
||||||
disableMixinCreated: true,
|
disableMixinCreated: true,
|
||||||
url: {
|
url: {
|
||||||
@@ -257,7 +346,11 @@ export default {
|
|||||||
this.loadData(1)
|
this.loadData(1)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
formatMoney
|
formatMoney,
|
||||||
|
onDateChange (value, dateString) {
|
||||||
|
this.queryParam.estimatedArrivalStartDate = dateString[0]
|
||||||
|
this.queryParam.estimatedArrivalEndDate = dateString[1]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@@ -268,4 +361,35 @@ export default {
|
|||||||
color: #069f99;
|
color: #069f99;
|
||||||
cursor: pointer;
|
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>
|
</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