Commit d0b257a9 authored by XieZhiXiong's avatar XieZhiXiong

feat: 添加会员能力 -> 会员维护CN国际化

parent 1b89b454
This diff is collapsed.
......@@ -26,8 +26,8 @@ export const importSchema: ISchema = {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: intl.formatMessage({ id: 'member.management.import.query.placeholder-name' }),
tip: intl.formatMessage({ id: 'member.management.import.query.placeholder-name-tip' }),
placeholder: intl.formatMessage({ id: 'member.management.import.query.name.placeholder' }),
tip: intl.formatMessage({ id: 'member.management.import.query.name.placeholder-tip' }),
},
},
},
......@@ -46,7 +46,7 @@ export const importSchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: intl.formatMessage({ id: 'member.management.import.query.placeholder-memberTypeId' }),
placeholder: intl.formatMessage({ id: 'member.management.import.query.memberTypeId.placeholder' }),
allowClear: true,
style: {
width: 160,
......@@ -58,7 +58,7 @@ export const importSchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: intl.formatMessage({ id: 'member.management.import.query.placeholder-roleId' }),
placeholder: intl.formatMessage({ id: 'member.management.import.query.roleId.placeholder' }),
allowClear: true,
style: {
width: 160,
......@@ -70,7 +70,7 @@ export const importSchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: intl.formatMessage({ id: 'member.management.import.query.placeholder-outerStatus' }),
placeholder: intl.formatMessage({ id: 'member.management.import.query.outerStatus.placeholder' }),
allowClear: true,
style: {
width: 160,
......@@ -82,7 +82,7 @@ export const importSchema: ISchema = {
default: '',
'x-component': 'dateSelect',
'x-component-props': {
placeholder: intl.formatMessage({ id: 'member.management.import.query.placeholder-date' }),
placeholder: intl.formatMessage({ id: 'member.management.import.query.date.placeholder' }),
allowClear: true,
style: {
width: 160,
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:36:43
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 17:59:17
* @LastEditTime: 2021-11-29 17:19:17
* @Description: 加入黑名单
*/
import React, { useState, useEffect } from 'react';
......@@ -15,14 +15,18 @@ import {
Tooltip,
Space,
} from 'antd';
import { history } from 'umi';
import { history, useIntl } from 'umi';
import { StopOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { createFormActions } from '@formily/antd';
import {
DatePicker,
} from '@formily/antd-components'
import { usePageStatus } from '@/hooks/usePageStatus';
import { getMemberAbilityMaintenanceDetail, GetMemberAbilityMaintenanceDetailResponse, postMemberAbilityMaintenanceBlacklist } from '@/services/MemberV2Api';
import {
getMemberAbilityMaintenanceDetail,
GetMemberAbilityMaintenanceDetailResponse,
postMemberAbilityMaintenanceBlacklist,
} from '@/services/MemberV2Api';
import {
MEMBER_TYPE_CHANNEL_CORPORATE,
MEMBER_TYPE_CHANNEL_INDIVIDUAL,
......@@ -62,6 +66,8 @@ const MemberMaintainBlack: React.FC<{}> = () => {
const [confirmLoading, setConfirmLoading] = useState(false);
const [blockedModalVisible, setBlockedModalVisible] = useState(false);
const intl = useIntl();
const getBasicInfo = () => {
if (!validateId) {
return;
......@@ -105,14 +111,14 @@ const MemberMaintainBlack: React.FC<{}> = () => {
const anchorsArr = [
{
key: 'basicInfo',
name: '基本信息',
name: intl.formatMessage({ id: 'member.management.maintain.basic' }),
},
(
memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE
|| memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
? {
key: 'channelInfo',
name: '渠道信息',
name: intl.formatMessage({ id: 'member.management.maintain.channel' }),
}
: null
),
......@@ -126,7 +132,7 @@ const MemberMaintainBlack: React.FC<{}> = () => {
),
{
key: 'flowRecords',
name: '流转记录',
name: intl.formatMessage({ id: 'member.management.maintain.flowRecords' }),
},
].filter(Boolean);
......@@ -150,7 +156,7 @@ const MemberMaintainBlack: React.FC<{}> = () => {
icon={<StopOutlined />}
onClick={() => setBlockedModalVisible(true)}
>
加入黑名单
{intl.formatMessage({ id: 'member.management.maintain.black.getBlocked' })}
</Button>
</Space>
)}
......@@ -243,8 +249,8 @@ const MemberMaintainBlack: React.FC<{}> = () => {
<Modal
title={(
<div>
会员黑名单
<Tooltip title="黑名单会员,不享用会员权益且不允许再申请会员关系">
{intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.title' })}
<Tooltip title={intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.title-description' })}>
<QuestionCircleOutlined
style={{ marginLeft: 8 }}
/>
......
......@@ -2,11 +2,14 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:39:42
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-04 10:47:51
* @LastEditTime: 2021-11-29 18:06:15
* @Description:
*/
import { getIntl } from 'umi';
import { ISchema } from '@formily/antd';
const intl = getIntl();
export const blockedModalSchema: ISchema = {
type: 'object',
properties: {
......@@ -19,10 +22,10 @@ export const blockedModalSchema: ISchema = {
properties: {
date: {
type: 'string',
title: '进入黑名单日期',
title: intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.form.date' }),
'x-component': 'DatePicker',
'x-component-props': {
placeholder: '请选择',
placeholder: intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.form.select.placeholder' }),
style: {
width: '100%',
},
......@@ -30,23 +33,23 @@ export const blockedModalSchema: ISchema = {
'x-rules': [
{
required: true,
message: '请选择进入黑名单日期',
message: intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.form.date.placeholder' }),
},
],
},
reason: {
type: 'string',
title: '进入黑名单原因',
title: intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.form.reason' }),
'x-component': 'Textarea',
'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字',
placeholder: intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.form.reason.placeholder' }),
maxLength: 60,
rows: 5,
},
'x-rules': [
{
required: true,
message: '请填写原因',
message: intl.formatMessage({ id: 'member.management.maintain.black.getBlocked.form.reason.rules-required' }),
},
{
limitByte: true, // 自定义校验规则
......
/*
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:36:43
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 17:59:35
* @Description: 会员整改详情
*/
import React, { useState, useEffect } from 'react';
import {
Button,
Modal,
Row,
Col,
Spin,
Tooltip,
Space,
} from 'antd';
import { history } from 'umi';
import { StopOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { createFormActions } from '@formily/antd';
import {
DatePicker,
} from '@formily/antd-components'
import { usePageStatus } from '@/hooks/usePageStatus';
import { getMemberAbilityMaintenanceDetail, GetMemberAbilityMaintenanceDetailResponse, postMemberAbilityMaintenanceEliminate } from '@/services/MemberV2Api';
import {
MEMBER_TYPE_CHANNEL_CORPORATE,
MEMBER_TYPE_CHANNEL_INDIVIDUAL,
} from '@/constants/member';
import AnchorPage from '@/components/AnchorPage';
import AvatarWrap from '@/components/AvatarWrap';
import LevelBrand from '@/components/LevelBrand';
import FlowRecords from '@/components/FlowRecords';
import CustomizeColumn from '@/components/CustomizeColumn';
import NiceForm from '@/components/NiceForm';
import { unfriendModalSchema } from './schema';
import {
MEMBER_OUTER_COLUMNS,
MEMBER_INNER_COLUMNS,
} from '../../constant';
import MemberBasicInfo from '../../components/MemberBasicInfo';
import MemberChannelInfo from '../../components/MemberChannelInfo';
import PicWrap from '../../components/PicWrap';
type ValueType = {
/**
* 日期
*/
date: string,
/**
* 理由
*/
reason: string,
}
const formActions = createFormActions();
const MemberMaintainCorrect: React.FC<{}> = () => {
const { validateId } = usePageStatus();
const [memberInfo, setMemberInfo] = useState<GetMemberAbilityMaintenanceDetailResponse>(null);
const [infoLoading, setInfoLoaading] = useState(false);
const [confirmLoading, setConfirmLoading] = useState(false);
const [unfriendModalVisible, setUnfriendModalVisible] = useState(false);
const getBasicInfo = () => {
if (!validateId) {
return;
}
setInfoLoaading(true);
getMemberAbilityMaintenanceDetail({
validateId,
}).then(res => {
if (res.code === 1000) {
setMemberInfo(res.data);
}
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoaading(false);
});
};
useEffect(() => {
getBasicInfo();
}, []);
const handleSubmit = (values: ValueType) => {
setConfirmLoading(true);
return postMemberAbilityMaintenanceEliminate({
validateId: validateId,
...values,
}).then(res => {
if (res.code !== 1000) {
return;
}
setUnfriendModalVisible(false);
setTimeout(() => {
history.goBack();
}, 800);
}).finally(() => {
setConfirmLoading(false);
});
};
const anchorsArr = [
{
key: 'basicInfo',
name: '基本信息',
},
(
memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE
|| memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
? {
key: 'channelInfo',
name: '渠道信息',
}
: null
),
...(
memberInfo && memberInfo.groups
? memberInfo.groups.map((item, index) => ({
key: `group${index}`,
name: item.groupName,
}))
: []
),
{
key: 'flowRecords',
name: '流转记录',
},
].filter(Boolean);
return (
<Spin spinning={infoLoading}>
<AnchorPage
title={(
<AvatarWrap
info={{
name: memberInfo?.name,
}}
extra={(
<LevelBrand level={2} />
)}
/>
)}
anchors={anchorsArr}
extra={(
<Space size={16}>
<Button
icon={<StopOutlined />}
onClick={() => setUnfriendModalVisible(true)}
>
解除关系
</Button>
</Space>
)}
>
<Row gutter={[16, 16]}>
{/* 基本信息 */}
<Col span={24}>
<MemberBasicInfo
dataSource={{
memberId: memberInfo?.memberId,
memberTypeName: memberInfo?.memberTypeName,
account: memberInfo?.account,
name: memberInfo?.name,
roleName: memberInfo?.roleName,
phone: memberInfo?.phone,
outerStatus: memberInfo?.outerStatus,
outerStatusName: memberInfo?.outerStatusName,
levelTag: memberInfo?.levelTag,
email: memberInfo?.email,
createTime: memberInfo?.registerTime,
}}
id="basicInfo"
/>
</Col>
{/* 渠道信息 */}
{
memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE
|| memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
? (
<Col span={24}>
<MemberChannelInfo
dataSource={{
level: memberInfo?.channelLevelTag,
type: memberInfo?.channelTypeName,
areas: memberInfo?.areas,
desc: memberInfo?.remark,
}}
id="channelInfo"
/>
</Col>
)
: null
}
{/* 其他注册信息 */}
{
memberInfo && memberInfo.groups
? memberInfo.groups.map((item, index) => (
<Col span={24} key={`group${index}`}>
<CustomizeColumn
title={item.groupName}
data={(
item.elements.map((ele) => ({
title: ele.fieldLocalName,
value: (
ele.fieldType !== 'upload'
? ele.fieldValue
: (
<PicWrap
pics={[ele.fieldValue]}
/>
)
),
}))
)}
id={`group${index}`}
/>
</Col>
))
: null
}
{/* 流转记录 */}
<Col span={24}>
<FlowRecords
outerColumns={MEMBER_OUTER_COLUMNS}
innerColumns={MEMBER_INNER_COLUMNS}
outerRowkey="id"
innerRowkey="id"
outerDataSource={memberInfo?.outerHistory}
innerDataSource={memberInfo?.innerHistory}
id="flowRecords"
/>
</Col>
</Row>
</AnchorPage>
{/* 解除关系相关 */}
<Modal
title={(
<div>
会员关系解除
<Tooltip title="解除当前会员关系,不在享用会员权益;可重新申请会员关系">
<QuestionCircleOutlined
style={{ marginLeft: 8 }}
/>
</Tooltip>
</div>
)}
visible={unfriendModalVisible}
confirmLoading={confirmLoading}
onOk={() => formActions.submit()}
onCancel={() => setUnfriendModalVisible(false)}
destroyOnClose
>
<NiceForm
previewPlaceholder="' '"
components={{
DatePicker,
}}
effects={() => {
}}
actions={formActions}
schema={unfriendModalSchema}
onSubmit={handleSubmit}
/>
</Modal>
</Spin>
);
};
export default MemberMaintainCorrect;
/*
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:39:42
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-04 10:47:51
* @Description:
*/
import { ISchema } from '@formily/antd';
export const unfriendModalSchema: ISchema = {
type: 'object',
properties: {
MEGA_LAYOUT: {
type: 'object',
'x-component': 'mega-layout',
'x-component-props': {
labelAlign: 'top',
},
properties: {
date: {
type: 'string',
title: '解除日期',
'x-component': 'DatePicker',
'x-component-props': {
placeholder: '请选择',
style: {
width: '100%',
},
},
'x-rules': [
{
required: true,
message: '请选择解除日期',
},
],
},
reason: {
type: 'string',
title: '解除原因',
'x-component': 'Textarea',
'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字',
maxLength: 60,
rows: 5,
},
'x-rules': [
{
required: true,
message: '请填写原因',
},
{
limitByte: true, // 自定义校验规则
maxByte: 120,
}
],
},
},
},
},
};
\ No newline at end of file
......@@ -2,10 +2,11 @@
* @Author: XieZhiXiong
* @Date: 2021-05-21 16:45:32
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 18:00:06
* @LastEditTime: 2021-11-29 20:07:02
* @Description: 会员档案信息
*/
import React, { useEffect, useState } from 'react';
import { useIntl } from 'umi';
import { Row, Col, Spin } from 'antd';
import { usePageStatus } from '@/hooks/usePageStatus';
import { getMemberAbilityMaintenanceDetailAppraisalPage, getMemberAbilityMaintenanceDetailInspectPage, getMemberAbilityMaintenanceDetailRecord, GetMemberAbilityMaintenanceDetailRecordResponse, getMemberAbilityMaintenanceDetailRectifyPage } from '@/services/MemberV2Api';
......@@ -101,6 +102,8 @@ const MemberArchiveInfo = () => {
const [archiveInfo, setArchiveInfo] = useState<GetMemberAbilityMaintenanceDetailRecordResponse>();
const [loading, setLoading] = useState(false);
const intl = useIntl();
const getArchiveInfo = () => {
setLoading(true);
getMemberAbilityMaintenanceDetailRecord({
......@@ -118,25 +121,25 @@ const MemberArchiveInfo = () => {
const inspectionColumns: EditableColumns<InspectListItemType>[] = [
{
title: '序号',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.inspect.index' }),
dataIndex: 'id',
render: (text, record, index) => index + 1,
},
{
title: '考察主题',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.inspect.subject' }),
dataIndex: 'subject',
ellipsis: true,
},
{
title: '考察类型',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.inspect.inspectTypeName' }),
dataIndex: 'inspectTypeName',
},
{
title: '考察日期',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.inspect.inspectTime' }),
dataIndex: 'inspectTime',
},
{
title: '考察评分',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.inspect.score' }),
dataIndex: 'score',
},
];
......@@ -161,26 +164,26 @@ const MemberArchiveInfo = () => {
const AppraisalColumns: EditableColumns<AppraisalListItemType>[] = [
{
title: '序号',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.appraisal.index' }),
render: (text, record, index) => index + 1,
},
{
title: '考评主题',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.appraisal.subject' }),
dataIndex: 'subject',
ellipsis: true,
render: (text, record) => `${text}-${record.name}`,
},
{
title: '考评范围',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.appraisal.appraisalDayStart' }),
dataIndex: 'appraisalDayStart',
render: (text, record) => `${text}`,
},
{
title: '考评完成时间',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.appraisal.completeDay' }),
dataIndex: 'completeDay',
},
{
title: '考评最终分',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.appraisal.totalScore' }),
dataIndex: 'totalScore',
},
]
......@@ -205,24 +208,24 @@ const MemberArchiveInfo = () => {
const RectifyColumns: EditableColumns<RectifyListItemType>[] = [
{
title: '序号',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.rectify.index' }),
render: (text, record, index) => index + 1,
},
{
title: '整改主题',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.rectify.subject' }),
dataIndex: 'subject',
ellipsis: true,
},
{
title: '整改开始日期',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.rectify.rectifyTimeStart' }),
dataIndex: 'rectifyTimeStart',
},
{
title: '整改截止日期',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.rectify.rectifyTimeEnd' }),
dataIndex: 'rectifyTimeEnd',
},
{
title: '整改结果',
title: intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.rectify.result' }),
dataIndex: 'result',
},
]
......@@ -285,7 +288,7 @@ const MemberArchiveInfo = () => {
{/* 考察信息 */}
<Col span={24}>
<MemberDocTableList<InspectListItemType>
title="考察信息"
title={intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.inspect' })}
columns={inspectionColumns}
fetchList={getInspectList}
id="inspectInfo"
......@@ -295,7 +298,7 @@ const MemberArchiveInfo = () => {
{/* 考评信息 */}
<Col span={24}>
<MemberDocTableList<AppraisalListItemType>
title="考评信息"
title={intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.appraisal' })}
columns={AppraisalColumns}
fetchList={getAppraisalList}
id="appraisalInfo"
......@@ -305,7 +308,7 @@ const MemberArchiveInfo = () => {
{/* 整改信息 */}
<Col span={24}>
<MemberDocTableList<RectifyListItemType>
title="整改信息"
title={intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo.rectify' })}
columns={RectifyColumns}
fetchList={getRectifyList}
id="rectifyInfo"
......
......@@ -6,7 +6,7 @@
* @Description:
*/
import React, { useState, useEffect } from 'react';
import { history } from 'umi';
import { history, useIntl } from 'umi';
import { Spin } from 'antd';
import {
UnorderedListOutlined,
......@@ -46,6 +46,8 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
const [memberInfo, setMemberInfo] = useState<GetMemberAbilityMaintenanceDetailBasicResponse>(null);
const [infoLoading, setInfoLoading] = useState(false);
const intl = useIntl();
const getBasicInfo = () => {
if (!validateId) {
return;
......@@ -119,18 +121,18 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
ret = [
{
key: 'verifySteps',
name: '流转进度',
name: intl.formatMessage({ id: 'member.management.maintain.detail.verifySteps' }),
},
{
key: 'basicInfo',
name: '基本信息',
name: intl.formatMessage({ id: 'member.management.maintain.basic' }),
},
(
memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE
|| memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
? {
key: 'channelInfo',
name: '渠道信息',
name: intl.formatMessage({ id: 'member.management.maintain.channel' }),
}
: null
),
......@@ -144,7 +146,7 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
),
{
key: 'flowRecords',
name: '流转记录',
name: intl.formatMessage({ id: 'member.management.maintain.flowRecords' }),
},
].filter(Boolean);
break;
......@@ -152,11 +154,11 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
ret = [
{
key: 'memberLevel',
name: '会员等级',
name: intl.formatMessage({ id: 'member.management.maintain.detail.memberLevel' }),
},
{
key: 'activePoints',
name: '活跃分获取记录',
name: intl.formatMessage({ id: 'member.management.maintain.detail.activePoints' }),
},
];
break;
......@@ -164,15 +166,15 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
ret = [
{
key: 'basicInfo',
name: '基本信息',
name: intl.formatMessage({ id: 'member.management.maintain.basic' }),
},
{
key: 'memberEquity',
name: '会员权益',
name: intl.formatMessage({ id: 'member.management.maintain.detail.memberEquity' }),
},
{
key: 'equityRecords',
name: '权益记录',
name: intl.formatMessage({ id: 'member.management.maintain.detail.equityRecords' }),
},
];
break;
......@@ -180,19 +182,19 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
ret = [
{
key: 'basicInfo',
name: '基本信息',
name: intl.formatMessage({ id: 'member.management.maintain.basic' }),
},
{
key: 'orderEvaluation',
name: '交易评价',
name: intl.formatMessage({ id: 'member.management.maintain.detail.orderEvaluation' }),
},
{
key: 'afterServiceEvaluation',
name: '售后评价',
name: intl.formatMessage({ id: 'member.management.maintain.detail.afterServiceEvaluation' }),
},
{
key: 'feedbackRecords',
name: '反馈记录',
name: intl.formatMessage({ id: 'member.management.maintain.detail.feedbackRecords' }),
},
];
break;
......@@ -200,27 +202,27 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
ret = [
{
key: 'categoryInfo',
name: '分类信息',
name: intl.formatMessage({ id: 'member.management.maintain.detail.categoryInfo' }),
},
{
key: 'depositDetails',
name: '入库信息',
name: intl.formatMessage({ id: 'member.management.maintain.detail.depositDetails' }),
},
{
key: 'qualitiesInfo',
name: '资质证明',
name: intl.formatMessage({ id: 'member.management.maintain.detail.qualitiesInfo' }),
},
{
key: 'inspectInfo',
name: '考察信息',
name: intl.formatMessage({ id: 'member.management.maintain.detail.inspectInfo' }),
},
{
key: 'appraisalInfo',
name: '考评信息',
name: intl.formatMessage({ id: 'member.management.maintain.detail.appraisalInfo' }),
},
{
key: 'rectifyInfo',
name: '整改信息',
name: intl.formatMessage({ id: 'member.management.maintain.detail.rectifyInfo' }),
},
];
break;
......@@ -228,7 +230,7 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
ret = [
{
key: 'changedInfo',
name: '变更信息',
name: intl.formatMessage({ id: 'member.management.maintain.detail.changedInfo' }),
},
];
break;
......@@ -255,12 +257,12 @@ const MemberMaintainDetailed: React.FC<QueryProps> = props => {
anchors={getAnchorsArr()}
extra={(
<Bookmark value={getBookmarkKey()} onChange={handleBookmarkChange}>
<Bookmark.Item value="basicInfo" title="基本信息" icon={<UnorderedListOutlined />} />
<Bookmark.Item value="archiveInfo" title="档案信息" icon={<FolderOutlined />} />
<Bookmark.Item value="levelInfo" title="等级信息" icon={<BarChartOutlined />} />
<Bookmark.Item value="equityInfo" title="权益信息" icon={<InsuranceOutlined />} />
<Bookmark.Item value="sincerityInfo" title="信用信息" icon={<BulbOutlined />} />
<Bookmark.Item value="changedInfo" title="变更信息" icon={<EditOutlined />} />
<Bookmark.Item value="basicInfo" title={intl.formatMessage({ id: 'member.management.maintain.basic' })} icon={<UnorderedListOutlined />} />
<Bookmark.Item value="archiveInfo" title={intl.formatMessage({ id: 'member.management.maintain.detail.archivalInfo' })} icon={<FolderOutlined />} />
<Bookmark.Item value="levelInfo" title={intl.formatMessage({ id: 'member.management.maintain.detail.levelInfo' })} icon={<BarChartOutlined />} />
<Bookmark.Item value="equityInfo" title={intl.formatMessage({ id: 'member.management.maintain.detail.equityInfo' })} icon={<InsuranceOutlined />} />
<Bookmark.Item value="sincerityInfo" title={intl.formatMessage({ id: 'member.management.maintain.detail.sincerityInfo' })} icon={<BulbOutlined />} />
<Bookmark.Item value="changedInfo" title={intl.formatMessage({ id: 'member.management.maintain.detail.changedInfo' })} icon={<EditOutlined />} />
</Bookmark>
)}
>
......
......@@ -2,10 +2,11 @@
* @Author: XieZhiXiong
* @Date: 2021-01-06 11:36:35
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 18:03:51
* @LastEditTime: 2021-11-29 20:10:48
* @Description: 会员信用信息详情
*/
import React, { useEffect, useState } from 'react';
import { useIntl } from 'umi';
import { Row, Col } from 'antd';
import { usePageStatus } from '@/hooks/usePageStatus';
import { getMemberAbilityMaintenanceDetailCreditAftersaleHistoryPage, getMemberAbilityMaintenanceDetailCreditAftersaleSummary, getMemberAbilityMaintenanceDetailCreditBasic, getMemberAbilityMaintenanceDetailCreditComplainHistoryPage, getMemberAbilityMaintenanceDetailCreditComplainSummary, getMemberAbilityMaintenanceDetailCreditTradeHistoryPage, getMemberAbilityMaintenanceDetailCreditTradeSummary } from '@/services/MemberV2Api';
......@@ -44,6 +45,8 @@ const MemberSincerityInfo: React.FC<{}> = () => {
sum: 0,
});
const intl = useIntl();
const getBasicInfo = () => {
setBasicInfoLoading(true);
getMemberAbilityMaintenanceDetailCreditBasic({
......@@ -62,19 +65,19 @@ const MemberSincerityInfo: React.FC<{}> = () => {
} = (res.data || {});
const pieData = [
{
x: '交易评价积分',
x: intl.formatMessage({ id: 'member.management.maintain.detail.sincerityInfo.tradeCommentPoint' }),
y: tradeCommentPoint || 0,
},
{
x: '售后评价积分',
x: intl.formatMessage({ id: 'member.management.maintain.detail.sincerityInfo.afterSaleCommentPoint' }),
y: afterSaleCommentPoint || 0,
},
{
x: '反馈扣分',
x: intl.formatMessage({ id: 'member.management.maintain.detail.sincerityInfo.complainPoint' }),
y: complainPoint || 0,
},
{
x: '入驻年数积分',
x: intl.formatMessage({ id: 'member.management.maintain.detail.sincerityInfo.registerYearsPoint' }),
y: registerYearsPoint || 0,
},
];
......@@ -213,7 +216,7 @@ const MemberSincerityInfo: React.FC<{}> = () => {
{/* 交易评价 */}
<Col span={24}>
<MemberEvaluation
title="交易评价"
title={intl.formatMessage({ id: 'member.management.maintain.detail.orderEvaluation' })}
analysis={orderEstimateSum}
loading={orderEstimateSumLoading}
fetchEvaluationList={getOrderEvaluationList}
......@@ -224,7 +227,7 @@ const MemberSincerityInfo: React.FC<{}> = () => {
{/* 售后评价 */}
<Col span={24}>
<MemberEvaluation
title="售后评价"
title={intl.formatMessage({ id: 'member.management.maintain.detail.afterServiceEvaluation' })}
analysis={afterServiceEstimateSum}
loading={afterServiceEstimateSumLoading}
fetchEvaluationList={getAfterServiceEvaluationList}
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:36:43
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 18:04:09
* @LastEditTime: 2021-11-29 17:49:03
* @Description: 解除关系
*/
import React, { useState, useEffect } from 'react';
......@@ -15,7 +15,7 @@ import {
Tooltip,
Space,
} from 'antd';
import { history } from 'umi';
import { history, useIntl } from 'umi';
import { StopOutlined, QuestionCircleOutlined } from '@ant-design/icons';
import { createFormActions } from '@formily/antd';
import {
......@@ -62,6 +62,8 @@ const MemberMaintainEliminate: React.FC<{}> = () => {
const [confirmLoading, setConfirmLoading] = useState(false);
const [unfriendModalVisible, setUnfriendModalVisible] = useState(false);
const intl = useIntl();
const getBasicInfo = () => {
if (!validateId) {
return;
......@@ -105,14 +107,14 @@ const MemberMaintainEliminate: React.FC<{}> = () => {
const anchorsArr = [
{
key: 'basicInfo',
name: '基本信息',
name: intl.formatMessage({ id: 'member.management.maintain.basic' }),
},
(
memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE
|| memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
? {
key: 'channelInfo',
name: '渠道信息',
name: intl.formatMessage({ id: 'member.management.maintain.channel' }),
}
: null
),
......@@ -126,7 +128,7 @@ const MemberMaintainEliminate: React.FC<{}> = () => {
),
{
key: 'flowRecords',
name: '流转记录',
name: intl.formatMessage({ id: 'member.management.maintain.flowRecords' }),
},
].filter(Boolean);
......@@ -150,7 +152,7 @@ const MemberMaintainEliminate: React.FC<{}> = () => {
icon={<StopOutlined />}
onClick={() => setUnfriendModalVisible(true)}
>
解除关系
{intl.formatMessage({ id: 'member.management.maintain.eliminate.remove' })}
</Button>
</Space>
)}
......@@ -243,8 +245,8 @@ const MemberMaintainEliminate: React.FC<{}> = () => {
<Modal
title={(
<div>
会员关系解除
<Tooltip title="解除当前会员关系,不在享用会员权益;可重新申请会员关系">
{intl.formatMessage({ id: 'member.management.maintain.eliminate.remove.title' })}
<Tooltip title={intl.formatMessage({ id: 'member.management.maintain.eliminate.remove.title-description' })}>
<QuestionCircleOutlined
style={{ marginLeft: 8 }}
/>
......
......@@ -2,11 +2,14 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:39:42
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-04 10:47:51
* @LastEditTime: 2021-11-29 18:13:35
* @Description:
*/
import { getIntl } from 'umi';
import { ISchema } from '@formily/antd';
const intl = getIntl();
export const unfriendModalSchema: ISchema = {
type: 'object',
properties: {
......@@ -19,7 +22,7 @@ export const unfriendModalSchema: ISchema = {
properties: {
date: {
type: 'string',
title: '解除日期',
title: intl.formatMessage({ id: 'member.management.maintain.eliminate.remove.form.date' }),
'x-component': 'DatePicker',
'x-component-props': {
placeholder: '请选择',
......@@ -30,23 +33,23 @@ export const unfriendModalSchema: ISchema = {
'x-rules': [
{
required: true,
message: '请选择解除日期',
message: intl.formatMessage({ id: 'member.management.maintain.eliminate.remove.form.date.rules-required' }),
},
],
},
reason: {
type: 'string',
title: '解除原因',
title: intl.formatMessage({ id: 'member.management.maintain.eliminate.remove.form.reason' }),
'x-component': 'Textarea',
'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字',
placeholder: intl.formatMessage({ id: 'member.management.maintain.eliminate.remove.form.reason.placeholder' }),
maxLength: 60,
rows: 5,
},
'x-rules': [
{
required: true,
message: '请填写原因',
message: intl.formatMessage({ id: 'member.management.maintain.eliminate.remove.form.reason.rules-required' }),
},
{
limitByte: true, // 自定义校验规则
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 11:31:48
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-04 11:42:18
* @LastEditTime: 2021-11-29 17:56:21
* @Description: 会员冻结
*/
import React, { useState, useEffect } from 'react';
......@@ -13,7 +13,7 @@ import {
Col,
Spin,
} from 'antd';
import { history } from 'umi';
import { history, useIntl } from 'umi';
import { StopOutlined } from '@ant-design/icons';
import {
createFormActions,
......@@ -55,6 +55,8 @@ const MemberFrozen: React.FC<{}> = () => {
const [modalVisible, setModalVisible] = useState(false);
const [infoLoading, setInfoLoaading] = useState(false);
const [confirmLoading, setConfirmLoading] = useState(false);
const intl = useIntl();
const getBasicInfo = () => {
if (!validateId) {
......@@ -100,19 +102,15 @@ const MemberFrozen: React.FC<{}> = () => {
const anchorsArr = [
{
key: 'verifySteps',
name: '流转进度',
},
{
key: 'basicInfo',
name: '基本信息',
name: intl.formatMessage({ id: 'member.management.maintain.basic' }),
},
(
memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE
|| memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
? {
key: 'channelInfo',
name: '渠道信息',
name: intl.formatMessage({ id: 'member.management.maintain.channel' }),
}
: null
),
......@@ -126,7 +124,7 @@ const MemberFrozen: React.FC<{}> = () => {
),
{
key: 'flowRecords',
name: '流转记录',
name: intl.formatMessage({ id: 'member.management.maintain.flowRecords' }),
},
].filter(Boolean);
......@@ -238,7 +236,7 @@ const MemberFrozen: React.FC<{}> = () => {
{/* 冻结相关 */}
<Modal
title="会员冻结"
title={intl.formatMessage({ id: 'member.management.maintain.freeze.freeze.title' })}
visible={modalVisible}
confirmLoading={confirmLoading}
onOk={() => formActions.submit()}
......@@ -247,13 +245,6 @@ const MemberFrozen: React.FC<{}> = () => {
>
<NiceForm
previewPlaceholder="' '"
effects={($, { setFieldState }) => {
FormEffectHooks.onFieldInit$('reason').subscribe(() => {
setFieldState('reason', fieldState => {
fieldState.props.title = '会员冻结原因';
});
});
}}
actions={formActions}
schema={freezeSchema}
onSubmit={handleSubmit}
......
......@@ -2,11 +2,14 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 11:27:42
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-04 11:27:43
* @LastEditTime: 2021-11-29 18:17:12
* @Description:
*/
import { getIntl } from 'umi';
import { ISchema } from '@formily/antd';
const intl = getIntl();
export const freezeSchema: ISchema = {
type: 'object',
properties: {
......@@ -19,17 +22,17 @@ export const freezeSchema: ISchema = {
properties: {
reason: {
type: 'string',
title: '会员解冻原因',
title: intl.formatMessage({ id: 'member.management.maintain.freeze.freeze.form.reason' }),
'x-component': 'Textarea',
'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字',
placeholder: intl.formatMessage({ id: 'member.management.maintain.freeze.freeze.form.reason.placeholder' }),
maxLength: 60,
rows: 5,
},
'x-rules': [
{
required: true,
message: '请填写原因',
message: intl.formatMessage({ id: 'member.management.maintain.freeze.freeze.form.reason.rules-required' }),
},
{
limitByte: true, // 自定义校验规则
......
import React, { useRef } from 'react';
import { Link } from 'umi';
import { Link, useIntl } from 'umi';
import {
Card,
Button,
......@@ -48,10 +48,11 @@ const fetchData = async (params: any) => {
const MemberMaintain: React.FC<[]> = () => {
const ref = useRef<any>({});
const intl = useIntl();
const defaultColumns: ColumnType<any>[] = [
{
title: '会员ID/名称',
title: `${intl.formatMessage({ id: 'member.management.maintain.query.memberId' })}/${intl.formatMessage({ id: 'member.management.maintain.query.memberName' })}`,
dataIndex: 'memberId',
render: (text, record) => (
<>
......@@ -67,20 +68,20 @@ const MemberMaintain: React.FC<[]> = () => {
),
},
{
title: '会员类型',
title: intl.formatMessage({ id: 'member.management.maintain.query.memberTypeName' }),
dataIndex: 'memberTypeName',
},
{
title: '会员角色',
title: intl.formatMessage({ id: 'member.management.maintain.query.roleName' }),
dataIndex: 'roleName',
},
{
title: '会员等级',
title: intl.formatMessage({ id: 'member.management.maintain.query.level' }),
dataIndex: 'level',
render: (text) => <LevelBrand level={text} />,
},
{
title: '注册来源/时间',
title: `${intl.formatMessage({ id: 'member.management.maintain.query.sourceName' })}/${intl.formatMessage({ id: 'member.management.maintain.query.registerTime' })}`,
dataIndex: 'sourceName',
render: (text, record) => (
<>
......@@ -90,13 +91,13 @@ const MemberMaintain: React.FC<[]> = () => {
),
},
{
title: '会员状态',
title: intl.formatMessage({ id: 'member.management.maintain.query.statusName' }),
dataIndex: 'statusName',
filters: [],
onFilter: (value, record) => record.status === value,
},
{
title: '外部状态',
title: intl.formatMessage({ id: 'member.management.maintain.query.outerStatusName' }),
dataIndex: 'outerStatusName',
filters: [],
onFilter: (value, record) => record.outerStatus === value,
......@@ -105,14 +106,14 @@ const MemberMaintain: React.FC<[]> = () => {
),
},
{
title: '内部状态',
title: intl.formatMessage({ id: 'member.management.maintain.query.innerStatusName' }),
dataIndex: 'innerStatusName',
filters: [],
onFilter: (value, record) => record.innerStatus === value,
render: (text, record) => <Badge color={MEMBER_INNER_STATUS_BADGE_COLOR[record.innerStatus] || '#606266'} text={text} />,
},
{
title: '操作',
title: intl.formatMessage({ id: 'common.table.action' }),
dataIndex: 'option',
render: (_, record) => (
<>
......@@ -121,7 +122,7 @@ const MemberMaintain: React.FC<[]> = () => {
<Button
type="link"
>
冻结
{intl.formatMessage({ id: 'member.management.maintain.query.freeze' })}
</Button>
</Link>
)}
......@@ -130,7 +131,7 @@ const MemberMaintain: React.FC<[]> = () => {
<Button
type="link"
>
解冻
{intl.formatMessage({ id: 'member.management.maintain.query.unfreeze' })}
</Button>
</Link>
)}
......@@ -139,7 +140,7 @@ const MemberMaintain: React.FC<[]> = () => {
<Button
type="link"
>
整改
{intl.formatMessage({ id: 'member.management.maintain.query.correct' })}
</Button>
</Link>
)}
......@@ -148,7 +149,7 @@ const MemberMaintain: React.FC<[]> = () => {
<Button
type="link"
>
淘汰
{intl.formatMessage({ id: 'member.management.maintain.query.eliminate' })}
</Button>
</Link>
)}
......@@ -157,7 +158,7 @@ const MemberMaintain: React.FC<[]> = () => {
<Button
type="link"
>
黑名单
{intl.formatMessage({ id: 'member.management.maintain.query.black' })}
</Button>
</Link>
)}
......
......@@ -2,12 +2,15 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 11:49:18
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-04 11:49:18
* @LastEditTime: 2021-11-29 16:52:00
* @Description:
*/
import { getIntl } from 'umi';
import { ISchema } from '@formily/antd';
import { FORM_FILTER_PATH } from '@/formSchema/const';
const intl = getIntl();
export const querySchema: ISchema = {
type: 'object',
properties: {
......@@ -19,9 +22,9 @@ export const querySchema: ISchema = {
type: 'string',
'x-component': 'Search',
'x-component-props': {
placeholder: '搜索',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.name.placeholder' }),
align: 'flex-left',
tip: '输入 会员名称 进行搜索',
tip: intl.formatMessage({ id: 'member.management.maintain.query.name.placeholder-tip' }),
},
},
[FORM_FILTER_PATH]: {
......@@ -39,7 +42,7 @@ export const querySchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: '会员类型(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.memberTypeId.placeholder' }),
allowClear: true,
},
},
......@@ -48,7 +51,7 @@ export const querySchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: '会员角色(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.roleId.placeholde' }),
allowClear: true,
},
},
......@@ -57,7 +60,7 @@ export const querySchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: '会员等级(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.level.placeholder' }),
allowClear: true,
},
},
......@@ -66,7 +69,7 @@ export const querySchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: '申请来源(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.source.placeholder' }),
allowClear: true,
},
},
......@@ -75,7 +78,7 @@ export const querySchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: '内部状态(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.innerStatus.placeholder' }),
allowClear: true,
},
},
......@@ -84,7 +87,7 @@ export const querySchema: ISchema = {
default: undefined,
enum: [],
'x-component-props': {
placeholder: '外部状态(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.outerStatus.placeholder' }),
allowClear: true,
},
},
......@@ -93,7 +96,7 @@ export const querySchema: ISchema = {
enum: [],
default: undefined,
'x-component-props': {
placeholder: '会员状态(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.status.placeholder' }),
allowClear: true,
},
},
......@@ -102,7 +105,7 @@ export const querySchema: ISchema = {
default: '',
'x-component': 'dateSelect',
'x-component-props': {
placeholder: '时间范围(全部)',
placeholder: intl.formatMessage({ id: 'member.management.maintain.query.date.placeholder' }),
allowClear: true,
},
},
......@@ -112,7 +115,7 @@ export const querySchema: ISchema = {
span: 1,
},
'x-component-props': {
children: '查询',
children: intl.formatMessage({ id: 'member.management.maintain.query.query' }),
},
},
},
......
......@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:36:43
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 18:04:34
* @LastEditTime: 2021-11-29 18:32:29
* @Description: 解除解冻
*/
import React, { useState, useEffect } from 'react';
......@@ -13,7 +13,7 @@ import {
Col,
Spin,
} from 'antd';
import { history } from 'umi';
import { history, useIntl } from 'umi';
import { StopOutlined } from '@ant-design/icons';
import {
createFormActions,
......@@ -56,6 +56,8 @@ const MemberMaintainUnfreeze: React.FC<{}> = () => {
const [infoLoading, setInfoLoaading] = useState(false);
const [confirmLoading, setConfirmLoading] = useState(false);
const intl = useIntl();
const getBasicInfo = () => {
if (!validateId) {
return;
......@@ -100,19 +102,15 @@ const MemberMaintainUnfreeze: React.FC<{}> = () => {
const anchorsArr = [
{
key: 'verifySteps',
name: '流转进度',
},
{
key: 'basicInfo',
name: '基本信息',
name: intl.formatMessage({ id: 'member.management.maintain.basic' }),
},
(
memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_CORPORATE
|| memberInfo?.memberTypeEnum === MEMBER_TYPE_CHANNEL_INDIVIDUAL
? {
key: 'channelInfo',
name: '渠道信息',
name: intl.formatMessage({ id: 'member.management.maintain.channel' }),
}
: null
),
......@@ -126,7 +124,7 @@ const MemberMaintainUnfreeze: React.FC<{}> = () => {
),
{
key: 'flowRecords',
name: '流转记录',
name: intl.formatMessage({ id: 'member.management.maintain.flowRecords' }),
},
].filter(Boolean);
......@@ -149,7 +147,7 @@ const MemberMaintainUnfreeze: React.FC<{}> = () => {
icon={<StopOutlined />}
onClick={() => setModalVisible(true)}
>
解冻
{intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze' })}
</Button>
)}
>
......@@ -238,7 +236,7 @@ const MemberMaintainUnfreeze: React.FC<{}> = () => {
{/* 解冻相关 */}
<Modal
title="会员解冻"
title={intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze.title' })}
visible={modalVisible}
confirmLoading={confirmLoading}
onOk={() => formActions.submit()}
......@@ -247,15 +245,15 @@ const MemberMaintainUnfreeze: React.FC<{}> = () => {
>
<NiceForm
previewPlaceholder="' '"
actions={formActions}
schema={freezeSchema}
effects={($, { setFieldState }) => {
FormEffectHooks.onFieldInit$('reason').subscribe(() => {
setFieldState('reason', fieldState => {
fieldState.props.title = '会员解冻原因';
fieldState.props.title = intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze.form.reason' });
});
});
}}
actions={formActions}
schema={freezeSchema}
onSubmit={handleSubmit}
/>
</Modal>
......
......@@ -2,11 +2,14 @@
* @Author: XieZhiXiong
* @Date: 2021-06-04 10:39:42
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-04 10:47:51
* @LastEditTime: 2021-11-29 19:42:56
* @Description:
*/
import { getIntl } from 'umi';
import { ISchema } from '@formily/antd';
const intl = getIntl();
export const unfriendModalSchema: ISchema = {
type: 'object',
properties: {
......@@ -19,7 +22,7 @@ export const unfriendModalSchema: ISchema = {
properties: {
date: {
type: 'string',
title: '解除日期',
title: intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze.form.date' }),
'x-component': 'DatePicker',
'x-component-props': {
placeholder: '请选择',
......@@ -30,23 +33,23 @@ export const unfriendModalSchema: ISchema = {
'x-rules': [
{
required: true,
message: '请选择解除日期',
message: intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze.form.date.rules-required' }),
},
],
},
reason: {
type: 'string',
title: '解除原因',
title: intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze.form.reason' }),
'x-component': 'Textarea',
'x-component-props': {
placeholder: '在此输入你的内容,最长120个字符,60个汉字',
placeholder: intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze.form.placeholder-reason' }),
maxLength: 60,
rows: 5,
},
'x-rules': [
{
required: true,
message: '请填写原因',
message: intl.formatMessage({ id: 'member.management.maintain.unfreeze.unfreeze.form.reason.rules-required' }),
},
{
limitByte: true, // 自定义校验规则
......
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