Commit 7dd05a4c authored by xiexiuxing's avatar xiexiuxing

支付按钮

parent 84f774b8
# btnCode 是pass 平台配置唯一表示
# btnCode 是pass 平台配置唯一表示
......@@ -272,8 +272,49 @@
# 售后管理
# 支付能力
# 支付能力-payandSettle
- 1.支付方式管理
- 1.1 会员支付方式配置
payParamsSetting.update 会员支付方式配置-保存 会员支付方式配置-保存-按钮
- 1.2 e账户认证 [加不动]
eAccountApprove.Personalsubmit e账户认证-个人提交 e账户认证-个人提交-按钮
eAccountApprove.PersonalFinish e账户认证-企业提交 e账户认证-企业提交-按钮
- 2.授信申请
2.1 授信额度管理
quotaMenage.see 授信额度管理-查看 授信额度管理-查看-按钮
quotaMenage.Apply 授信额度管理-申请 授信额度管理-申请-按钮
2.2 授信申请单查询
quotaFormQuery.see 授信额度管理-查看 授信额度管理-查看-按钮
2.3 待提交授信申请单
quotaPrSubmit.see 待提交授信申请单-查看 待提交授信申请单-查看-按钮
quotaPrSubmit.submit 待提交授信申请单-提交 待提交授信申请单-提交-按钮
quotaPrSubmit.del 待提交授信申请单-删除 待提交授信申请单-删除-按钮
quotaPrSubmit.update 待提交授信申请单-修改 待提交授信申请单-修改-按钮
- 3.授信处理
3.1.授信额度管理
quotaMenage1.see 授信额度管理-查看 授信额度管理-查看-按钮
quotaMenage1.update 授信额度管理-调整 授信额度管理-调整-按钮
quotaMenage1.frozen 授信额度管理-冻结 授信额度管理-冻结-按钮
3.2 授信申请单查询
quotaFormQuery1.frozen 授信申请单查询-查看 授信申请单查询-查看-按钮
3.3 待审核授信申请单(一级)
quotaPr1.see 待审核授信申请单(一级)-查看 待审核授信申请单(一级)-查看-按钮
quotaPr1.update 待审核授信申请单(一级)-更新 待审核授信申请单(一级)-更新-按钮
3.4 待审核授信申请单(二级)
quotaPr2.update 待审核授信申请单(二级)-更新 待审核授信申请单(二级)-更新-按钮
quotaPr2.see 待审核授信申请单(二级)-查看 待审核授信申请单(二级)-查看-按钮
3.5 待审核授信申请单(三级)
quotaPr3.see 待审核授信申请单(三级)-查看 待审核授信申请单(三级)-查看-按钮
quotaPr3.update 待审核授信申请单(三级)-提交 待审核授信申请单(三级)-提交-按钮
3.6 待确认授信申请单
quotaPrConfirm.see 待确认授信申请单-查看 待确认授信申请单-查看-按钮
quotaPrConfirm.update 待确认授信申请单-更新 待确认授信申请单-更新-按钮
- 4 资金账户
- 4.1 账户管理
accountLists.see 账户管理-查看 账户管理-查看-按钮
# 物流能力 - logisticsAbility (已完成)
- 1.物流管理
- 1.1 物流公司管理
......@@ -479,7 +520,7 @@
# 内容管理-contentAbility (90%)
# 内容管理-contentAbility (已完成)
- 1.内容管理-栏目管理
columnsManagement.del 栏目管理删除 栏目管理删除按钮
columnsManagement.edit 栏目管理编辑 栏目管理编辑按钮
......
import React, { useRef } from 'react'
import {useIntl} from 'umi';
import { useIntl } from 'umi';
import { Card } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import StandardTable from '@/components/StandardTable';
......@@ -14,6 +14,7 @@ import StatusTag from '@/components/StatusTag'
import { accountStatusMap, memberStatusMap, memberLevelTypeMap, accountMemberType } from '../../constant'
import DateRangePickerUnix from '@/components/NiceForm/components/DateRangePickerUnix'
import { getPayAssetAccountGetAssetAccountList } from '@/services/PayV2Api'
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
const formActions = createFormActions();
......@@ -23,24 +24,25 @@ const AccountLists: React.FC<{}> = () => {
const columns: ColumnType<any>[] = [
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.parentMemberName'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.parentMemberName' }),
dataIndex: 'parentMemberName',
key: 'parentMemberName',
className: 'commonPickColor',
render: (text, record) => <EyePreview
type={AuthUrl('accountLists.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/capitalAccounts/accountLists/detail?id=${record.id}`}
>
{text}
</EyePreview>
},
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.memberType'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.memberType' }),
dataIndex: 'memberType',
key: 'memberType',
render: (t, r) => accountMemberType[t]
},
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.memberRoleName'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.memberRoleName' }),
dataIndex: 'memberRoleName',
key: 'memberRoleName',
},
......@@ -51,40 +53,40 @@ const AccountLists: React.FC<{}> = () => {
// render: (t, r) => <LevelBrand level={r.memberLevel} />
// },
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.memberLevelType'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.memberLevelType' }),
dataIndex: 'memberLevelType',
key: 'memberLevelType',
render: (t, r) => memberLevelTypeMap[t]
},
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.memberStatus'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.memberStatus' }),
dataIndex: 'memberStatus',
key: 'memberStatus',
render: (t, r) => (<StatusTag title={memberStatusMap[t]['title']} type={memberStatusMap[t]['type']} />)
},
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.accountStatus'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.accountStatus' }),
dataIndex: 'accountStatus',
key: 'accountStatus',
render: (t, r) => (<><span className={accountStatusMap[t]['className']}></span>{accountStatusMap[t]['title']}</>)
},
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.accountBalance'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.accountBalance' }),
dataIndex: 'accountBalance',
key: 'accountBalance',
render: text => `${intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.currency'})}${text.toFixed(2)}`
render: text => `${intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.currency' })}${text.toFixed(2)}`
},
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.lockBalance'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.lockBalance' }),
dataIndex: 'lockBalance',
key: 'lockBalance',
render: text => `${intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.currency'})}${text.toFixed(2)}`
render: text => `${intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.currency' })}${text.toFixed(2)}`
},
{
title: intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.usableBalance'}),
title: intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.usableBalance' }),
dataIndex: 'usableBalance',
key: 'usableBalance',
render: (t, r) => `${intl.formatMessage({id: 'payandSettle.capitalAccounts.accountLists.columns.currency'})}${((r.accountBalance*100 - r.lockBalance*100)/100).toFixed(2)}`
render: (t, r) => `${intl.formatMessage({ id: 'payandSettle.capitalAccounts.accountLists.columns.currency' })}${((r.accountBalance * 100 - r.lockBalance * 100) / 100).toFixed(2)}`
},
]
......
......@@ -23,6 +23,7 @@ import {
CREDIT_INNER_STATUS_BADGE_MAP_PURCHASER,
} from '../../constant';
import styles from './index.less';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
const formActions = createFormActions();
......@@ -38,6 +39,7 @@ const QuotaFormQuery: React.FC = () => {
render: (text, record) => (
<>
<EyePreview
type={AuthUrl('quotaFormQuery.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditApplication/quotaFormQuery/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
......
import React, { useState, useRef } from 'react';
import { Card, Badge, Progress, Button, Tooltip } from 'antd';
import { QuestionCircleOutlined } from '@ant-design/icons';
import { history,useIntl } from 'umi';
import { history, useIntl } from 'umi';
import StandardTable from '@/components/StandardTable';
import { ColumnType } from 'antd/lib/table/interface';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
......@@ -18,7 +18,7 @@ import {
CREDIT_STATUS_FROZEN,
CREDIT_STATUS,
CREDIT_REPAYMENT_STATUS_OVERDUE,
} from '@/constants/payment';
} from '@/constants/payment';
import {
CREDIT_REPAYMENT_STATUS_TAG_MAP,
CREDIT_STATUS_BADGE_MAP,
......@@ -28,6 +28,8 @@ import NiceForm from '@/components/NiceForm';
import StatusTag from '@/components/StatusTag';
import { listSearchSchema } from './schema';
import styles from './index.less';
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const formActions = createFormActions();
......@@ -43,7 +45,7 @@ const QuotaMenage: React.FC = () => {
const defaultColumns: ColumnType<any>[] = [
{
title: '会员归属',
dataIndex: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.parentMemberName'}),
dataIndex: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.parentMemberName' }),
align: 'center',
render: (text, record) => (
<>
......@@ -51,12 +53,13 @@ const QuotaMenage: React.FC = () => {
{(!record.isHasApply && (record.status === CREDIT_STATUS_NOT_APPLIED || record.status === CREDIT_STATUS_APPLYING)) ? (
<>
{`${text} `}
<Tooltip title={intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.parentMemberName.tooltip'})}>
<Tooltip title={intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.parentMemberName.tooltip' })}>
<QuestionCircleOutlined />
</Tooltip>
</>
) : (
<EyePreview
type={AuthUrl('quotaMenage.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditApplication/quotaMenage/detail?id=${record.id}`}
>
{text}
......@@ -66,35 +69,35 @@ const QuotaMenage: React.FC = () => {
),
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.memberTypeName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.memberTypeName' }),
dataIndex: 'memberTypeName',
align: 'center',
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.memberRoleName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.memberRoleName' }),
dataIndex: 'memberRoleName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.memberLevelName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.memberLevelName' }),
dataIndex: 'memberLevelName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.canUseQuota'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.canUseQuota' }),
dataIndex: 'canUseQuota',
align: 'center',
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.quota'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.quota' }),
dataIndex: 'quota',
align: 'center',
render: (text, record) => (
<>
<div>{intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.quota.text.1'})}{text}</div>
<div>{intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.quota.text.2'})}{record.useQuota}</div>
<div>{intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.quota.text.1' })}{text}</div>
<div>{intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.quota.text.2' })}{record.useQuota}</div>
</>
),
},
......@@ -114,7 +117,7 @@ const QuotaMenage: React.FC = () => {
),
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.repayStatusName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.repayStatusName' }),
dataIndex: 'repayStatusName',
align: 'center',
render: (text, record) => (
......@@ -129,7 +132,7 @@ const QuotaMenage: React.FC = () => {
),
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.statusName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.statusName' }),
dataIndex: 'statusName',
align: 'center',
filters: [],
......@@ -137,7 +140,7 @@ const QuotaMenage: React.FC = () => {
render: (text, record) => <Badge color={CREDIT_STATUS_BADGE_MAP[record.status] || '#606266'} text={text} />,
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.action'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.action' }),
dataIndex: 'action',
align: 'center',
render: (_, record) => (
......@@ -154,12 +157,14 @@ const QuotaMenage: React.FC = () => {
record.status === CREDIT_STATUS_NORMAL
)
) && (
<AuthButton btnCode='quotaMenage.Apply' menuCode='payandSettle'>
<Button
type="link"
onClick={() => handleJumpApply(record)}
>
{intl.formatMessage({id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.action.button'})}
{intl.formatMessage({ id: 'payandSettle.creditApplication.quotaMenage.defaultColumns.action.button' })}
</Button>
</AuthButton>
)
}
</>
......
......@@ -11,7 +11,7 @@ import {
ClockCircleOutlined,
} from '@ant-design/icons';
import StandardTable from '@/components/StandardTable';
import { history,useIntl } from 'umi';
import { history, useIntl } from 'umi';
import moment from 'moment';
import { ColumnType } from 'antd/lib/table/interface';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
......@@ -32,6 +32,8 @@ import {
CREDIT_INNER_STATUS_BADGE_MAP_PURCHASER,
} from '../../constant';
import styles from './index.less';
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const formActions = createFormActions();
......@@ -41,7 +43,7 @@ const QuotaPrSubmit: React.FC = () => {
const handleSubmit = record => {
const msg = message.loading({
content: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.handleSubmit'}),
content: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.handleSubmit' }),
duration: 0,
});
postPayCreditApplySubmitCreditApply({
......@@ -61,7 +63,7 @@ const QuotaPrSubmit: React.FC = () => {
const handleDelete = record => {
const msg = message.loading({
content: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.handleDelete'}),
content: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.handleDelete' }),
duration: 0,
});
postPayCreditApplyDeleteCreditApply({
......@@ -77,12 +79,13 @@ const QuotaPrSubmit: React.FC = () => {
const defaultColumns: ColumnType<any>[] = [
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.applyNo'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.applyNo' }),
dataIndex: 'applyNo',
align: 'center',
render: (text, record) => (
<>
<EyePreview
type={AuthUrl('quotaPrSubmit.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditApplication/quotaPrSubmit/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
......@@ -94,39 +97,39 @@ const QuotaPrSubmit: React.FC = () => {
),
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.parentMemberName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.parentMemberName' }),
dataIndex: 'parentMemberName',
align: 'center',
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.memberTypeName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.memberTypeName' }),
dataIndex: 'memberTypeName',
align: 'center',
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.memberRoleName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.memberRoleName' }),
dataIndex: 'memberRoleName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.memberLevelName'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.memberLevelName' }),
dataIndex: 'memberLevelName',
align: 'center',
render: (text, record) => <>{text}</>,
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.originalQuota'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.originalQuota' }),
dataIndex: 'originalQuota',
align: 'center',
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.applyQuota'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.applyQuota' }),
dataIndex: 'applyQuota',
align: 'center',
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.outerStatus'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.outerStatus' }),
dataIndex: 'outerStatus',
align: 'center',
render: (text, record) => (
......@@ -134,51 +137,60 @@ const QuotaPrSubmit: React.FC = () => {
),
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.innerStatus'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.innerStatus' }),
dataIndex: 'innerStatus',
align: 'center',
render: (text, record) => <Badge color={CREDIT_INNER_STATUS_BADGE_MAP_PURCHASER[record.innerStatus] || '#606266'} text={record.innerStatusName} />,
},
{
title: intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option'}),
title: intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option' }),
dataIndex: 'option',
align: 'center',
render: (text, record) => (
<>
{record.outerStatus === CREDIT_INNER_STATUS_UNCOMMITTED && (
<AuthButton btnCode='quotaPrSubmit.submit' menuCode='payandSettle'>
<Button
type="link"
onClick={() => handleSubmit(record)}
>
{intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.1'})}
{intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.1' })}
</Button>
</AuthButton>
)}
{record.outerStatus === CREDIT_INNER_STATUS_UNCOMMITTED && (
<AuthButton btnCode='quotaPrSubmit.del' menuCode='payandSettle'>
<Popconfirm
title={intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2.popconfirm.title'})}
okText={intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2.popconfirm.okText'})}
cancelText={intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2.popconfirm.cancelText'})}
title={intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2.popconfirm.title' })}
okText={intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2.popconfirm.okText' })}
cancelText={intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2.popconfirm.cancelText' })}
onConfirm={() => handleDelete(record)}
>
<Button
type="link"
danger
>
{intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2'})}
{intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.2' })}
</Button>
</Popconfirm>
</AuthButton>
)}
{/* 外部状态为不接受申请 或者 内部状态为 待提交申请 都可以进行编辑 */}
{(
record.outerStatus === CREDIT_OUTER_STATUS_FAILED ||
record.innerStatus === CREDIT_INNER_STATUS_UNCOMMITTED
) && (
<AuthButton btnCode='quotaPrSubmit.update' menuCode='payandSettle'>
<Button
type="link"
onClick={() => handleJumpVerify(record)}
>
{intl.formatMessage({id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.3'})}
{intl.formatMessage({ id: 'payandSettle.creditApplication.quotaPrSubmit.defaultColumns.option.button.3' })}
</Button>
</AuthButton>
)}
</>
),
......
......@@ -23,6 +23,7 @@ import {
CREDIT_INNER_STATUS_BADGE_MAP,
} from '../../constant';
import styles from './index.less';
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const formActions = createFormActions();
......@@ -38,6 +39,7 @@ const QuotaFormQuery: React.FC = () => {
render: (text, record) => (
<>
<EyePreview
type={AuthUrl('quotaFormQuery1.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditManage/quotaFormQuery/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
......
......@@ -40,6 +40,8 @@ import { listSearchSchema } from './schema';
import styles from './index.less';
const formActions = createFormActions();
import AuthButton from '@/components/AuthButton'
import { AuthUrl } from '@/components/AuthButton/AuthUrl'
const QuotaMenage: React.FC = () => {
const intl = useIntl();
......@@ -107,6 +109,7 @@ const QuotaMenage: React.FC = () => {
) : (
<>
<EyePreview
type={AuthUrl('quotaMenage1.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditManage/quotaMenage/detail?id=${record.id}`}
>
{text}
......@@ -195,12 +198,15 @@ const QuotaMenage: React.FC = () => {
record.status === CREDIT_STATUS_NORMAL &&
!!record.isCanApply
) && (
<AuthButton btnCode='quotaMenage1.update' menuCode='update'>
<Button
type="link"
onClick={() => handleAdjustment(record)}
>
{intl.formatMessage({ id: 'payandSettle.creditManage.quotaMenage.defaultColumns.action.button.1' })}
</Button>
</AuthButton>
)}
{/* 暂时不做了 */}
{/* <Button
......@@ -214,6 +220,7 @@ const QuotaMenage: React.FC = () => {
record.status === CREDIT_STATUS_NORMAL ||
record.status === CREDIT_STATUS_FROZEN
) && (
<AuthButton btnCode='quotaMenage1.frozen' menuCode='update'>
<Button
type="link"
onClick={() => handleFrozen(record)}
......@@ -221,6 +228,7 @@ const QuotaMenage: React.FC = () => {
>
{record.status === CREDIT_STATUS_NORMAL ? intl.formatMessage({ id: 'payandSettle.creditManage.quotaMenage.defaultColumns.action.button.2' }) : intl.formatMessage({ id: 'payandSettle.creditManage.quotaMenage.defaultColumns.action.button.3' })}
</Button>
</AuthButton>
)}
</>
),
......
......@@ -24,6 +24,8 @@ import {
CREDIT_INNER_STATUS_BADGE_MAP,
} from '../../constant';
import styles from './index.less';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
import AuthButton from '@/components/AuthButton'
const formActions = createFormActions();
......@@ -39,6 +41,7 @@ const QuotaPr1: React.FC = () => {
render: (text, record) => (
<>
<EyePreview
type={AuthUrl('quotaPr1.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditManage/quotaPr1/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
......@@ -110,12 +113,15 @@ const QuotaPr1: React.FC = () => {
align: 'center',
render: (text, record) => (
<>
<AuthButton btnCode='quotaPr1.update' menuCode='payandSettle'>
<Button
type="link"
onClick={() => history.push(`/memberCenter/payandSettle/creditManage/quotaPr1/verify?id=${record.id}&creditId=${record.creditId}`)}
>
{intl.formatMessage({ id: 'payandSettle.creditManage.quotaPr1.verify' })}
</Button>
</AuthButton>
</>
),
},
......
......@@ -24,6 +24,8 @@ import {
CREDIT_INNER_STATUS_BADGE_MAP,
} from '../../constant';
import styles from './index.less';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
import AuthButton from '@/components/AuthButton';
const formActions = createFormActions();
......@@ -39,6 +41,7 @@ const QuotaPr1: React.FC = () => {
render: (text, record) => (
<>
<EyePreview
type={AuthUrl('quotaPr2.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditManage/quotaPr2/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
......@@ -110,12 +113,15 @@ const QuotaPr1: React.FC = () => {
align: 'center',
render: (text, record) => (
<>
<AuthButton btnCode='quotaPr2.update' menuCode='payandSettle'>
<Button
type="link"
onClick={() => history.push(`/memberCenter/payandSettle/creditManage/quotaPr2/verify?id=${record.id}&creditId=${record.creditId}`)}
>
{intl.formatMessage({ id: 'payandSettle.creditManage.quotaPr2.verify' })}
</Button>
</AuthButton>
</>
),
},
......
......@@ -24,6 +24,8 @@ import {
CREDIT_INNER_STATUS_BADGE_MAP,
} from '../../constant';
import styles from './index.less';
import AuthButton from '@/components/AuthButton';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
const formActions = createFormActions();
......@@ -39,6 +41,7 @@ const QuotaPr3: React.FC = () => {
render: (text, record) => (
<>
<EyePreview
type={AuthUrl('quotaPr3.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditManage/quotaPr3/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
......@@ -110,12 +113,15 @@ const QuotaPr3: React.FC = () => {
align: 'center',
render: (text, record) => (
<>
<AuthButton btnCode='quotaPr3.update' menuCode='payandSettle'>
<Button
type="link"
onClick={() => history.push(`/memberCenter/payandSettle/creditManage/quotaPr3/verify?id=${record.id}&creditId=${record.creditId}`)}
>
{intl.formatMessage({ id: 'payandSettle.creditManage.quotaPr3.verify' })}
</Button>
</AuthButton>
</>
),
},
......
......@@ -24,6 +24,8 @@ import {
CREDIT_INNER_STATUS_BADGE_MAP,
} from '../../constant';
import styles from './index.less';
import { AuthUrl } from '@/components/AuthButton/AuthUrl';
import AuthButton from '@/components/AuthButton';
const formActions = createFormActions();
......@@ -39,6 +41,7 @@ const QuotaPrConfirm: React.FC = () => {
render: (text, record) => (
<>
<EyePreview
type={AuthUrl('quotaPrConfirm.see', 'payandSettle') ? 'link' : 'button'}
url={`/memberCenter/payandSettle/creditManage/quotaPrConfirm/detail?id=${record.id}&creditId=${record.creditId}`}
>
{text}
......@@ -110,12 +113,15 @@ const QuotaPrConfirm: React.FC = () => {
align: 'center',
render: (text, record) => (
<>
<AuthButton btnCode='quotaPrConfirm.update' menuCode='payandSettle'>
<Button
type="link"
onClick={() => history.push(`/memberCenter/payandSettle/creditManage/quotaPrConfirm/verify?id=${record.id}&creditId=${record.creditId}`)}
>
{intl.formatMessage({ id: 'payandSettle.creditManage.quotaPrConfirm.verify' })}
</Button>
</AuthButton>
</>
),
},
......
......@@ -6,6 +6,7 @@ import useCountDown from '@/utils/hooks';
import { PATTERN_MAPS } from '@/constants/regExp';
import { postPayAllInPayPersonalCrate, postPayAllInPaySendVerificationCode } from '@/services/PayV2Api';
import { useIntl } from 'umi';
import AuthButton from '@/components/AuthButton'
/** 个人 初始认证 */
const Personal: React.FC<{}> = () => {
......@@ -18,8 +19,8 @@ const Personal: React.FC<{}> = () => {
const onFinish = async (values: any) => {
setLoading(true)
const { code } = await postPayAllInPayPersonalCrate({...values, verificationCodeType: BIND_PHONE}, { ctlType: "none" })
if(code === 1000) {
const { code } = await postPayAllInPayPersonalCrate({ ...values, verificationCodeType: BIND_PHONE }, { ctlType: "none" })
if (code === 1000) {
reloadFormData()
message.success(intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.caozuochenggong', defaultMessage: '操作成功' }))
} else {
......@@ -150,9 +151,12 @@ const Personal: React.FC<{}> = () => {
</Form.Item>
<Form.Item {...tailFormItemLayout}>
<AuthButton btnCode='eAccountApprove.Personalsubmit' menuCode='payandSettle'>
<Button type="primary" htmlType="submit" loading={loading}>
{intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.tijiao', defaultMessage: '提交' })}
</Button>
</AuthButton>
</Form.Item>
</Form>
</MellowCard>
......
......@@ -12,6 +12,7 @@ import ModalForm from '@/components/ModalForm'
import PhoneCode from '../phone'
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'
import { useIntl } from 'umi'
import AuthButton from '@/components/AuthButton'
const bindActions = createFormActions();
......@@ -27,19 +28,19 @@ const PersonalFinish: React.FC<{}> = () => {
const [extra, setExtra] = useState<string>()
useEffect(() => {
if(data.contractNo) {
form.setFieldsValue({'contractNo': data.ContractNo})
if (data.contractNo) {
form.setFieldsValue({ 'contractNo': data.ContractNo })
}
}, [data])
const onFinish = async (values: any) => {
// 绑定银行卡
const p1 = await postPayAllInPayBindBankCard({phone: data.phone, verificationCode: values.captcha, cardNo: values.cardNo}, { ctlType: "none" })
const p1 = await postPayAllInPayBindBankCard({ phone: data.phone, verificationCode: values.captcha, cardNo: values.cardNo }, { ctlType: "none" })
// 进一步完善个人信息
const p2 = await postPayAllInPaySubmitPersonal({bankNo: values.cardNo, bankName: values.cardName}, {ctlType: "none"})
const p2 = await postPayAllInPaySubmitPersonal({ bankNo: values.cardNo, bankName: values.cardName }, { ctlType: "none" })
Promise.all([p1, p2]).then(res => {
if(res.every(item => item['code'] === 1000)) {
if (res.every(item => item['code'] === 1000)) {
reloadFormData()
message.success(intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.caozuochenggong', defaultMessage: '操作成功' }))
ctl.setFinish(true) // 已经完善
......@@ -54,8 +55,8 @@ const PersonalFinish: React.FC<{}> = () => {
};
const clickSign = async () => {
const { code, data } = await postPayAllInPaySignContract({jumpPageType:1}, { ctlType: "none" })
if(code === 1000) {
const { code, data } = await postPayAllInPaySignContract({ jumpPageType: 1 }, { ctlType: "none" })
if (code === 1000) {
var signLink = document.getElementById('signLink')
signLink.setAttribute('href', data)
signLink.click()
......@@ -86,7 +87,7 @@ const PersonalFinish: React.FC<{}> = () => {
identityType: data.cardType,
identityNo: data.cardNo,
})
if(res.code === 1000) {
if (res.code === 1000) {
setExtra(`${intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.yijiangyanzhengma', defaultMessage: '已将验证码发送至您尾号为' })}${data.phone.substr(7, 4)}${intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.deshoujihao', defaultMessage: '的手机号' })}`)
start()
reloadFormData()
......@@ -95,8 +96,8 @@ const PersonalFinish: React.FC<{}> = () => {
}
const contractPreview = async () => {
const {code, data} = await postPayAllInPaySignContractQuery({jumpPageType:1}, { ctlType: 'none' })
if(code === 1000) {
const { code, data } = await postPayAllInPaySignContractQuery({ jumpPageType: 1 }, { ctlType: 'none' })
if (code === 1000) {
var signLink = document.getElementById('signPrewview')
signLink.setAttribute('href', data)
signLink.click()
......@@ -110,10 +111,10 @@ const PersonalFinish: React.FC<{}> = () => {
// 绑定解绑手机
const handleBindSubmit = () => {
const fn = data?.phone ? postPayAllInPayUnbindPhone : postPayAllInPayBindPhone
bindActions.submit().then(async ({values}: any) => {
bindActions.submit().then(async ({ values }: any) => {
setBindLoading(true)
fn(values).then(res => {
if(res.code === 1000) {
if (res.code === 1000) {
reloadFormData()
}
}).finally(() => {
......@@ -129,8 +130,8 @@ const PersonalFinish: React.FC<{}> = () => {
icon: <ExclamationCircleOutlined />,
content: intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.shifouquedingjie', defaultMessage: '是否确定解绑该银行卡?' }),
onOk() {
postPayAllInPayUnbindBankCard({cardNo: data.bankNo}).then(({code, data}) => {
if(code === 1000) {
postPayAllInPayUnbindBankCard({ cardNo: data.bankNo }).then(({ code, data }) => {
if (code === 1000) {
reloadFormData()
// 解绑后需要完善信息 并显示返回图标
ctl.setPerfection(true)
......@@ -143,7 +144,7 @@ const PersonalFinish: React.FC<{}> = () => {
return (<div>
{!perfection ? <div>
<MellowCard headStyle={{borderBottom:'none'}} title={intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.gerenxinxi', defaultMessage: '个人信息' })} id="personalInfo">
<MellowCard headStyle={{ borderBottom: 'none' }} title={intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.gerenxinxi', defaultMessage: '个人信息' })} id="personalInfo">
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
......@@ -154,7 +155,7 @@ const PersonalFinish: React.FC<{}> = () => {
<Col span={12}>
<Row className={styles['card-list']}>
<Col span={6} className={styles['card-list_title']}>{intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.zhengjianleixing', defaultMessage: '证件类型' })}</Col>
<Col>{data.cardType === 1 ? intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.shenfenzheng', defaultMessage: '身份证' }) : '' }</Col>
<Col>{data.cardType === 1 ? intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.shenfenzheng', defaultMessage: '身份证' }) : ''}</Col>
</Row>
</Col>
</Row>
......@@ -175,7 +176,7 @@ const PersonalFinish: React.FC<{}> = () => {
</MellowCard>
{
data.bankNo ? <>
<MellowCard headStyle={{borderBottom:'none'}} style={{marginTop: 16}} title={intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.yinhangzhanghu', defaultMessage: '银行账户' })} id="accountInfo">
<MellowCard headStyle={{ borderBottom: 'none' }} style={{ marginTop: 16 }} title={intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.yinhangzhanghu', defaultMessage: '银行账户' })} id="accountInfo">
<Row>
<Col span={12}>
<Row className={styles['card-list']}>
......@@ -199,15 +200,15 @@ const PersonalFinish: React.FC<{}> = () => {
</MellowCard>
</>
:
<MellowCard headStyle={{borderBottom:'none'}} style={{marginTop: 16}} title="">
<h3><SoundOutlined style={{color:'#00A98F'}} /> {intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.jinyibuwanshan', defaultMessage: '进一步完善资料,可实现提现功能~' })}</h3>
<MellowCard headStyle={{ borderBottom: 'none' }} style={{ marginTop: 16 }} title="">
<h3><SoundOutlined style={{ color: '#00A98F' }} /> {intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.jinyibuwanshan', defaultMessage: '进一步完善资料,可实现提现功能~' })}</h3>
<Button type="primary" onClick={handleFinish}>{intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.lijiwanshan', defaultMessage: '立即完善' })}</Button>
</MellowCard>
}
</div>
:
<div>
<MellowCard headStyle={{borderBottom:'none'}} title={intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.wanshanxinxi', defaultMessage: '完善信息' })}>
<MellowCard headStyle={{ borderBottom: 'none' }} title={intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.wanshanxinxi', defaultMessage: '完善信息' })}>
<Form
{...formItemLayout}
form={form}
......@@ -277,13 +278,15 @@ const PersonalFinish: React.FC<{}> = () => {
name="contractNo"
// rules={[{ required: true, message: '请签约电子协议' }]}
>
{ data.contractNo ? data.contractNo : (<Button onClick={clickSign} icon={<EditOutlined />} style={{width: '100%'}}>{intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.qianwangqianyue', defaultMessage: '前往签约' })}</Button>)}
{data.contractNo ? data.contractNo : (<Button onClick={clickSign} icon={<EditOutlined />} style={{ width: '100%' }}>{intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.qianwangqianyue', defaultMessage: '前往签约' })}</Button>)}
</Form.Item>
<Form.Item {...tailFormItemLayout}>
<AuthButton btnCode='eAccountApprove.PersonalFinish' menuCode='payandSettle'>
<Button type="primary" htmlType="submit" loading={loading}>
{intl.formatMessage({ id: 'payandSettle.capitalAccounts.eAccount.tijiao', defaultMessage: '提交' })}
</Button>
</AuthButton>
</Form.Item>
</Form>
</MellowCard>
......@@ -294,12 +297,12 @@ const PersonalFinish: React.FC<{}> = () => {
confirm={handleBindSubmit}
actions={bindActions}
schema={data?.phone ? unbindSchema : bindSchema}
modalProps={{confirmLoading: bindLoading, destroyOnClose: true}}
components={{PhoneCode}}
modalProps={{ confirmLoading: bindLoading, destroyOnClose: true }}
components={{ PhoneCode }}
effects={($, actions) => {
useAsyncSelect('areaCode', fetchTelCode)
$('onFormInit').subscribe(() => {
if(data?.phone) {
if (data?.phone) {
actions.setFieldValue('phone', data.phone)
actions.setFieldState('verificationCode', state => {
state.props['x-component-props']['type'] = UNBIND_PHONE
......@@ -318,8 +321,8 @@ const PersonalFinish: React.FC<{}> = () => {
})
}}
/>
<a href="" target="_blank" id="signLink" style={{display: 'none', visibility: "hidden"}}></a>
<a href="" target="_blank" id="signPrewview" style={{display: 'none', visibility: "hidden"}}></a>
<a href="" target="_blank" id="signLink" style={{ display: 'none', visibility: "hidden" }}></a>
<a href="" target="_blank" id="signPrewview" style={{ display: 'none', visibility: "hidden" }}></a>
</div>)
}
......
......@@ -18,6 +18,7 @@ import { PageHeaderWrapper } from '@ant-design/pro-layout';
import NumberInput from './components/number';
import { getOrderMemberPaymentParameterFind, postOrderMemberPaymentParameterCreate } from '@/services/OrderNewV2Api';
import PayEmptyLayout from './payEmpty';
import AuthButton from '@/components/AuthButton'
const PIC_MAP = {
1: alipay,
......@@ -289,6 +290,7 @@ const PaySettingLayout = () => {
detail={intl.formatMessage({ id: 'payandSettle.paySetting.detail' })}
tabLink={tabLink}
effect={
<AuthButton btnCode='payParamsSetting.update' menuCode='payandSettle'>
<Button
type="primary"
icon={<SaveOutlined />}
......@@ -296,6 +298,8 @@ const PaySettingLayout = () => {
>
{intl.formatMessage({ id: 'payandSettle.paySetting.effect' })}
</Button>
</AuthButton>
}
components={
<Fragment>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment