Commit 63517686 authored by XieZhiXiong's avatar XieZhiXiong

关闭按钮判断条件

parent 97ac30eb
......@@ -30,6 +30,13 @@ const memberAbility =
component: '@/pages/member/memberMaintain/memberDetail',
},
{
path: '/memberAbility/manage/frozen',
name: 'maintainFrozen',
key: 'maintainFrozen',
hideInMenu: true,
component: '@/pages/member/memberMaintain/frozen',
},
{
path: '/memberAbility/manage/memberPrSubmit',
name: 'memberPrSubmit',
component: '@/pages/member/memberPrSubmit/index',
......
/*
* @Author: LeeJiancong
* @Date: 2020-08-04 15:05:52
* @LastEditors: LeeJiancong
* @LastEditTime: 2020-08-07 16:07:31
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-10 11:28:44
*/
import utils from '@/utils'
import menu from '../en-US/menu'
......@@ -62,6 +62,7 @@ export default {
'menu.memberAbility.memberMaintain': '会员维护',
'menu.memberAbility.addMember': '新增会员',
'menu.memberAbility.memberDetail': '会员详情',
'menu.memberAbility.maintainFrozen': '会员冻结',
'menu.memberAbility.memberPrSubmit': '待提交审核',
'menu.memberAbility.auditPrSubmit': '待提交审核详情',
'menu.memberAbility.memberPr1': '待审核(一级)',
......
import React, { useState, useEffect } from 'react';
import { history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { PageHeader, Tag, Descriptions, Button, Modal, Badge, Spin } from 'antd';
import { SettingOutlined, StopOutlined } from '@ant-design/icons';
import { createFormActions, FormEffectHooks } from '@formily/antd';
import { STATUS_COLOR_MAP, STATUS_COLOR_TXT } from '../constant';
import { usePageStatus } from '@/hooks/usePageStatus';
import { PublicApi } from '@/services/api';
import { GetMemberMaintenanceDetailBasicResponse } from '@/services/MemberApi';
import {
MEMBER_STATUS_NORMAL,
MEMBER_STATUS_FROZEN,
MEMBER_OUTER_STATUS,
} from '@/constants';
import NiceForm from '@/components/NiceForm';
import { auditModalSchema } from './schema';
import {
MEMBER_STATUS_TAG_MAP,
MEMBER_INNER_STATUS_BADGE_COLOR,
MEMBER_OUTER_STATUS_TYPE,
} from '../constant';
import HeadInfo from '../components/HeadInfo';
import AuditProcess from '../components/AuditProcess';
import BasicInfo from '../components/BasicInfo';
import StatusTag from '../components/StatusTag';
import styles from './index.less';
const formActions = createFormActions();
const Frozen: React.FC<{}> = () => {
const { pageStatus, id, validateId } = usePageStatus();
const [basicInfo, setBasicInfo] = useState<GetMemberMaintenanceDetailBasicResponse>();
const [modalVisible, setModalVisible] = useState(false);
const [infoLoading, setInfoLoaading] = useState(false);
const [confirmLoading, setConfirmLoading] = useState(false);
const getBasicInfo = () => {
if (!id || !validateId) {
return;
}
setInfoLoaading(true);
PublicApi.getMemberMaintenanceDetailBasic({
memberId: id,
validateId,
}).then(res => {
if (res.code === 1000) {
setBasicInfo(res.data);
}
}).finally(() => {
setInfoLoaading(false);
});
};
useEffect(() => {
getBasicInfo();
}, []);
// 冻结与解冻
const handleSubmit = (values: { reason: string }, oldStatus) => {
setConfirmLoading(true);
return PublicApi.postMemberMaintenanceStatus({
memberId: id,
validateId: validateId,
status: oldStatus === MEMBER_STATUS_NORMAL ? MEMBER_STATUS_FROZEN : MEMBER_STATUS_NORMAL,
remark: values.reason || '',
}).then(res => {
if (res.code !== 1000) {
return;
}
setModalVisible(false);
getBasicInfo();
}).finally(() => {
setConfirmLoading(false);
});
};
return (
<Spin spinning={infoLoading}>
<PageHeaderWrapper
title={
<>
<PageHeader
style={{ padding: '0' }}
onBack={() => history.goBack()}
title={
<HeadInfo
info={{
name: basicInfo?.name,
level: 1,
}}
/>
}
extra={(
<>
{basicInfo && (
basicInfo.status === MEMBER_STATUS_NORMAL ? (
<Button
icon={<StopOutlined />}
onClick={() => setModalVisible(true)}
>
冻结
</Button>
) : (
<Button
type="primary"
icon={<SettingOutlined />}
onClick={() => setModalVisible(true)}
>
解冻
</Button>
)
)}
</>
)}
>
<Descriptions
size="small"
column={3}
style={{
padding: '0 32px',
}}
>
<Descriptions.Item label="会员类型">{basicInfo?.memberTypeName}</Descriptions.Item>
<Descriptions.Item label="会员角色" span={2}>{basicInfo?.roleName}</Descriptions.Item>
<Descriptions.Item label="会员状态">
<StatusTag type={MEMBER_STATUS_TAG_MAP[basicInfo?.status]} title={basicInfo?.statusName} />
</Descriptions.Item>
<Descriptions.Item label="外部状态">
<StatusTag type={MEMBER_OUTER_STATUS_TYPE[basicInfo?.outerStatus]} title={basicInfo?.outerStatusName} />
</Descriptions.Item>
<Descriptions.Item label="内部状态">
<Badge color={MEMBER_INNER_STATUS_BADGE_COLOR[basicInfo?.innerStatus]} text={basicInfo?.innerStatusName} />
</Descriptions.Item>
</Descriptions>
</PageHeader>
</>
}
>
<div
style={{
marginBottom: 24,
}}
>
<AuditProcess
outerVerifyCurrent={basicInfo?.currentOuterStep}
innerVerifyCurrent={basicInfo?.currentInnerStep}
outerVerifySteps={basicInfo?.outerVerifySteps}
innerVerifySteps={basicInfo?.innerVerifySteps}
/>
</div>
<BasicInfo
basic={{
account: basicInfo?.account,
phone: basicInfo?.phone,
email: basicInfo?.email,
created: basicInfo?.createTime,
}}
channel={{
memberType: basicInfo?.memberTypeEnum,
level: basicInfo?.channelLevelTag,
type: basicInfo?.channelTypeName,
areas: basicInfo?.areas,
desc: basicInfo?.remark,
}}
extra={basicInfo?.groups}
outerHistory={basicInfo?.outerHistory}
innerHistory={basicInfo?.innerHistory}
/>
<Modal
title={basicInfo ? basicInfo.status === MEMBER_STATUS_NORMAL ? '会员冻结' : '会员解冻' : ''}
visible={modalVisible}
confirmLoading={confirmLoading}
onOk={() => formActions.submit()}
onCancel={() => setModalVisible(false)}
destroyOnClose
>
<NiceForm
previewPlaceholder="' '"
effects={($, { setFieldState }) => {
FormEffectHooks.onFieldInit$('reason').subscribe(state => {
setFieldState('reason', fieldState => {
fieldState.props.title = basicInfo ? `会员${basicInfo.status === MEMBER_STATUS_NORMAL ? '冻结' : '解冻'}原因` : '';
});
});
}}
actions={formActions}
schema={auditModalSchema}
onSubmit={value => handleSubmit(value, basicInfo.status)}
/>
</Modal>
</PageHeaderWrapper>
</Spin>
);
};
export default Frozen;
This diff is collapsed.
......@@ -22,7 +22,7 @@ export const importSchema: ISchema = {
children: '{{controllerBtns}}',
},
},
cond: {
name: {
type: 'string',
'x-component': 'Search',
'x-component-props': {
......@@ -35,9 +35,6 @@ export const importSchema: ISchema = {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
rowStyle: {
flexWrap: 'nowrap',
},
colStyle: {
marginLeft: 20,
},
......@@ -45,42 +42,75 @@ export const importSchema: ISchema = {
properties: {
memberType: {
type: 'string',
default: 0,
default: undefined,
enum: [],
'x-component-props': {},
'x-component-props': {
placeholder: '会员类型(全部)',
allowClear: true,
},
},
roleId: {
type: 'string',
default: 0,
default: undefined,
enum: [],
'x-component-props': {},
'x-component-props': {
placeholder: '会员角色(全部)',
allowClear: true,
},
},
level: {
type: 'string',
default: 0,
default: undefined,
enum: [],
'x-component-props': {},
'x-component-props': {
placeholder: '会员等级(全部)',
allowClear: true,
},
},
source: {
type: 'string',
default: 0,
default: undefined,
enum: [],
'x-component-props': {
placeholder: '申请来源(全部)',
allowClear: true,
},
},
innerStatus: {
type: 'string',
default: undefined,
enum: [],
'x-component-props': {},
'x-component-props': {
placeholder: '内部状态(全部)',
allowClear: true,
},
},
timeRange: {
outerStatus: {
type: 'string',
default: 0,
enum: [
{ label: '时间范围(全部)', value: 0 },
{ label: '今天', value: 1 },
{ label: '一周内', value: 2 },
{ label: '一个月内', value: 3 },
{ label: '三个月内', value: 4 },
{ label: '六个月内', value: 5 },
{ label: '一年内', value: 6 },
{ label: '一年前', value: 7 },
],
'x-component-props': {},
default: undefined,
enum: [],
'x-component-props': {
placeholder: '外部状态(全部)',
allowClear: true,
},
},
status: {
type: 'string',
enum: [],
default: undefined,
'x-component-props': {
placeholder: '会员状态(全部)',
allowClear: true,
},
},
'[startDate, endDate]': {
type: 'string',
default: '',
'x-component': 'dateSelect',
'x-component-props': {
placeholder: '时间范围(全部)',
allowClear: true,
},
},
submit: {
'x-component': 'Submit',
......@@ -98,32 +128,30 @@ export const importSchema: ISchema = {
},
};
export const auditModalSchema = props => {
let modalSchema: ISchema = {
type: 'object',
properties: {
MEGA_LAYOUT: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
labelAlign: 'top',
},
properties: {
remark: {
type: 'string',
title: `会员${props.status === 1 ? '解冻' : '冻结'}原因`,
'x-component': 'textarea',
'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字',
maxLength: 60,
},
'x-rules': [{ required: true, message: '请填写审核不通过原因' }],
export const auditModalSchema: ISchema = {
type: 'object',
properties: {
MEGA_LAYOUT: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
labelAlign: 'top',
},
properties: {
reason: {
type: 'string',
title: '会员解冻原因',
'x-component': 'textarea',
'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字',
maxLength: 60,
rows: 5,
},
'x-rules': [{ required: true, message: '请填写原因' }],
},
},
},
};
return modalSchema;
},
};
const getCompnentValue = (elements: any) => {
......
......@@ -115,14 +115,12 @@ const MemberPrConfirm: React.FC<{}> = props => {
align: 'center',
render: (text: any, record: any) => (
<>
{record.innerStatus !== MEMBER_INNER_STATUS_SUCCESS && (
<Button
type="link"
onClick={() => handleJumpAudit(record)}
>
确认审核结果
</Button>
)}
<Button
type="link"
onClick={() => handleJumpAudit(record)}
>
确认审核结果
</Button>
</>
),
},
......
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