Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
shenshaokai
jinfa-platform
Commits
8562b489
Commit
8562b489
authored
Jun 10, 2021
by
XieZhiXiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: 修改 修改会员信息 相关
parent
61ba864a
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
102 additions
and
166 deletions
+102
-166
index.tsx
...pages/member/memberImport/components/MemberForm/index.tsx
+84
-62
index.ts
...member/memberImport/components/MemberForm/schema/index.ts
+3
-100
editMySelf.tsx
src/pages/member/memberImport/editMySelf.tsx
+1
-1
utils.tsx
src/pages/member/utils.tsx
+14
-3
No files found.
src/pages/member/memberImport/components/MemberForm/index.tsx
View file @
8562b489
...
...
@@ -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/Member
Api'
;
import
{
GetMemberAbilitySubGetResponse
,
GetMemberMainpageDetailGetResponse
}
from
'@/services/MemberV2
Api'
;
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
<
GetMemberAbilitySubGetRespons
e
>
(
null
);
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
MemberInfoTyp
e
>
(
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
;
src/pages/member/memberImport/components/MemberForm/schema/index.ts
View file @
8562b489
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
),
},
},
};
...
...
src/pages/member/memberImport/editMySelf.tsx
View file @
8562b489
...
...
@@ -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"
/>
);
};
...
...
src/pages/member/utils.tsx
View file @
8562b489
...
...
@@ -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
||
fals
e
,
disabled
:
field
.
disabled
||
!
!
field
.
editabl
e
,
},
};
break
;
...
...
@@ -146,7 +157,7 @@ const getFieldType = (field: ElementType) => {
enum
:
field
.
fieldEnum
,
'x-component-props'
:
{
showDesc
:
false
,
disabled
:
field
.
disabled
||
!
field
.
editable
||
fals
e
,
disabled
:
field
.
disabled
||
!
!
field
.
editabl
e
,
},
};
break
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment