Commit 8562b489 authored by XieZhiXiong's avatar XieZhiXiong

chore: 修改 修改会员信息 相关

parent 61ba864a
......@@ -10,10 +10,9 @@ import NiceForm from '@/components/NiceForm';
import { useAsyncInitSelect } from '@/formSchema/effects/useAsyncInitSelect';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import { PublicApi } from '@/services/api';
import { GetMemberAbilitySubGetResponse } from '@/services/MemberApi';
import { GetMemberAbilitySubGetResponse, GetMemberMainpageDetailGetResponse } from '@/services/MemberV2Api';
import { initDetailSchema } from './schema';
import { legoState } from 'lingxi-editor-core';
// import { getAuth } from '@/utils/auth';
import { getAuth, setAuth } from '@/utils/auth';
const formActions = createFormActions();
const {
......@@ -22,6 +21,28 @@ const {
onFormInputChange$,
} = FormEffectHooks;
type MemberInfoType = {
memberTypeId: number,
roleId: number,
level: number,
countryCodeId: number,
phone: number,
email: number,
upperRelationId: number,
channelLevel: string,
areas: {
/**
* 省编码
*/
provinceCode: string
/**
* 市编码
*/
cityCode: string
}[],
remark: string,
} & { [key: string]: any }
interface MemberFormProps {
/**
* 数据id
......@@ -35,39 +56,45 @@ interface MemberFormProps {
* 是否是可编辑的
*/
isEdit?: boolean,
// mode?: 'myself' | "any"
/**
* 当前模式 myself 表示自己修改自己的信息,一般用于会员注册时被拒绝之后
*/
mode?: 'myself' | 'any'
};
const MemberForm: React.FC<MemberFormProps> = ({
id,
validateId,
// mode,
mode,
isEdit = false,
}) => {
const [memberItems, setMemberItems] = useState<any>({});
const [memberInfo, setMemberInfo] = useState<GetMemberAbilitySubGetResponse>(null);
const [memberInfo, setMemberInfo] = useState<MemberInfoType>(null);
const [submitLoading, setSubmitLoading] = useState(false);
const [infoLoading, setInfoLoading] = useState(false);
const [unsaved, setUnsaved] = useState(false);
const getDetailedInfo = async () => {
if (id && validateId) {
let infoRes: {
code: number,
data: MemberInfoType,
} = null;
setInfoLoading(true);
let infoRes = null;
// if (mode === 'myself') {
// infoRes = await PublicApi.getMemberMainpageDetailGet();
// } else {
// }
if (mode === 'myself' && !id && !validateId) {
infoRes = await PublicApi.getMemberMainpageDetailGet();
formActions.setFieldState('tabs.tab-1.MEGA_LAYOUT1.*(!email)', state => {
state.editable = false;
});
}
if (id && validateId) {
infoRes = await PublicApi.getMemberAbilitySubGet({
memberId: `${id}`,
validateId: `${validateId}`,
});
if (infoRes.code !== 1000) {
}
if (infoRes?.code !== 1000) {
setInfoLoading(false);
return;
}
const {
......@@ -78,7 +105,6 @@ const MemberForm: React.FC<MemberFormProps> = ({
account,
channelLevelTag,
channelTypeName,
countryCode,
createTime,
currentStep,
......@@ -113,7 +139,7 @@ const MemberForm: React.FC<MemberFormProps> = ({
// 获取渠道信息
const channelRes = await PublicApi.getMemberAbilitySubPageitemsChannel({
memberTypeId: rest.memberTypeId,
memberTypeId: `${rest.memberTypeId}`,
});
if (channelRes.code !== 1000) {
......@@ -154,21 +180,12 @@ const MemberForm: React.FC<MemberFormProps> = ({
});
setInfoLoading(false);
}
};
useEffect(() => {
getDetailedInfo();
}, []);
// useEffect(() => {
// if (mode === "myself") {
// formActions.setFieldState('tabs.tab-1.MEGA_LAYOUT1.*(memberTypeId, MEGA_LAYOUT1_1.*, roleId, level)', state => {
// state.editable = false;
// });
// }
// }, [mode])
const handleSubmit = (values: any) => {
const {
memberTypeId,
......@@ -205,6 +222,39 @@ const MemberForm: React.FC<MemberFormProps> = ({
detail: rest,
};
// 编辑自己信息
if (mode === 'myself') {
setSubmitLoading(true);
const msg = message.loading({
content: '正在保存,请稍候...',
duration: 0,
});
PublicApi.postMemberMainpageDetailUpdate({
email,
detail: rest,
}).then(({ code }) => {
if (code !== 1000) {
return;
}
const auth = getAuth();
setAuth({
...auth,
company: rest.company_name,
validateMsg: null,
validateStatus: 1,
validateStatusDesc: '待审核',
});
setUnsaved(false);
setTimeout(() => {
history.push('/memberCenter/home');
}, 800);
}).finally(() => {
msg();
setSubmitLoading(false);
});
return;
}
if (!id && isEdit) {
setSubmitLoading(true);
const msg = message.loading({
......@@ -253,38 +303,6 @@ const MemberForm: React.FC<MemberFormProps> = ({
});
return;
}
// if (mode === 'myself') {
// setSubmitLoading(true);
// const msg = message.loading({
// content: '正在保存,请稍候...',
// duration: 0,
// });
// PublicApi.postMemberMainpageDetailUpdate({
// email,
// detail: rest,
// }).then(({ data, code }) => {
// if (code !== 1000) {
// return;
// }
// const auth = getAuth();
// localStorage.setItem("auth", JSON.stringify({
// ...auth,
// company: rest.company_name,
// validateMsg: null,
// validateStatus: 1,
// validateStatusDesc: "待审核"
// }))
// setUnsaved(false);
// setTimeout(() => {
// history.push('/memberCenter/home')
// }, 800);
// }).finally(() => {
// msg();
// setSubmitLoading(false);
// });
// }
};
// 会员类型、注册手机下拉框
......@@ -519,7 +537,7 @@ const MemberForm: React.FC<MemberFormProps> = ({
}}
onBack={() => history.goBack()}
backIcon={<ReutrnEle description="返回" />}
title={!id ? '新建会员' : '编辑会员'}
title={!id && mode === 'any' ? '新建会员' : '编辑会员'}
extra={[
<Button
key="1"
......@@ -534,6 +552,7 @@ const MemberForm: React.FC<MemberFormProps> = ({
>
<Card>
<NiceForm
previewPlaceholder=" "
onSubmit={handleSubmit}
actions={formActions}
initialValues={memberInfo || {}}
......@@ -567,7 +586,10 @@ const MemberForm: React.FC<MemberFormProps> = ({
};
MemberForm.defaultProps = {
// mode: 'any',
id: 0,
validateId: 0,
isEdit: false,
mode: 'any',
}
export default MemberForm;
import { ISchema } from '@formily/antd';
import { PATTERN_MAPS } from '@/constants/regExp';
import { createMemberSchema, GroupItem } from '../../../../utils';
type FieldType = 'string' | 'long' | 'upload' | 'radio' | 'select' | 'checkbox';
// 字段校验规则枚举:0-无校验规则,1-邮箱规则,2-手机号码规则,3-身份证规则,4-电话号码规则
const RULE_REG_MAP = {
1: PATTERN_MAPS.email,
2: PATTERN_MAPS.phone,
3: PATTERN_MAPS.identity,
4: PATTERN_MAPS.tel,
};
const getFieldType = (field) => {
// 默认是 输入框
let description: { [key: string]: any } = {
type: 'string',
required: field.fieldEmpty === 0,
title: field.fieldLocalName,
default: field.fieldValue,
'x-component-props': {
placeholder: field.fieldRemark,
disabled: field.disabled,
},
};
// 公共的属性
const common = {
type: 'string',
required: field.fieldEmpty === 0,
title: field.fieldLocalName,
default: field.fieldValue,
'x-rules': [
(
field.ruleEnum
? {
pattern: RULE_REG_MAP[field.ruleEnum],
message: field.msg,
}
: null
),
(
field.pattern
? {
pattern: field.pattern,
message: field.msg,
}
: null
),
].filter(Boolean),
};
switch (field.fieldType as FieldType) {
case 'upload': {
description = {
'x-component': 'CustomUpload',
'x-component-props': {
showDesc: false,
disabled: field.disabled,
},
};
break;
}
case 'radio': {
description = {
'x-component': 'RadioGroup',
enum: field.fieldEnum,
'x-component-props': {
showDesc: false,
disabled: field.disabled,
},
};
break;
}
case 'select': {
description = {
enum: field.fieldEnum,
};
break;
}
case 'checkbox': {
description = {
'x-component': 'CheckboxGroup',
enum: field.fieldEnum,
};
break;
}
default:
break;
}
return Object.assign({}, description, common);
};
const getComponentValue = (elements: any) => {
const components = {};
for (let item of elements) {
components[item.fieldName] = getFieldType(item);
}
return components;
};
export const initDetailSchema = (props: any) => {
export const initDetailSchema = (props: GroupItem[]) => {
let tabSchema: ISchema = {
properties: {
'tab-1': {
......@@ -316,7 +219,7 @@ export const initDetailSchema = (props: any) => {
wrapperCol: 8,
labelAlign: 'left',
},
properties: getComponentValue(item.elements),
properties: createMemberSchema(item.elements),
},
},
};
......
......@@ -6,7 +6,7 @@ const EditMySelf: React.FC = () => {
const { id, validateId } = usePageStatus();
return (
<MemberForm id={+id} validateId={+validateId} isEdit={true} mode={"myself"} />
<MemberForm id={+id} validateId={+validateId} isEdit={true} mode="myself" />
);
};
......
......@@ -70,6 +70,17 @@ export type ElementType = {
editable?: boolean,
}
export type GroupItem = {
/**
* 组名
*/
groupName: string,
/**
* 元素
*/
elements: ElementType[],
}
export function coverColFiltersItem(
data: Array<{[key: string]: any}>,
dataIndex: string,
......@@ -100,7 +111,7 @@ const getFieldType = (field: ElementType) => {
let description: { [key: string]: any } = {
'x-component-props': {
placeholder: field.fieldRemark,
disabled: field.disabled || !field.editable || false,
disabled: field.disabled || !field.editable,
},
};
// 公共的属性
......@@ -135,7 +146,7 @@ const getFieldType = (field: ElementType) => {
'x-component': 'CustomUpload',
'x-component-props': {
showDesc: false,
disabled: field.disabled || !field.editable || false,
disabled: field.disabled || !!field.editable,
},
};
break;
......@@ -146,7 +157,7 @@ const getFieldType = (field: ElementType) => {
enum: field.fieldEnum,
'x-component-props': {
showDesc: false,
disabled: field.disabled || !field.editable || false,
disabled: field.disabled || !!field.editable,
},
};
break;
......
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