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
黄庭坚
jinfa-platform
Commits
5702bedc
Commit
5702bedc
authored
Sep 08, 2020
by
XieZhiXiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
对接完毕会员审核流程
parent
53b29f93
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
1863 additions
and
265 deletions
+1863
-265
DateSelect.tsx
src/components/NiceForm/components/DateSelect.tsx
+0
-1
addMember.tsx
src/pages/member/memberImport/addMember.tsx
+33
-1
index.tsx
src/pages/member/memberImport/schema/index.tsx
+1
-1
index.tsx
src/pages/member/memberMaintain/schema/index.tsx
+4
-13
auditPr1.tsx
src/pages/member/memberPr1/auditPr1.tsx
+205
-69
index.tsx
src/pages/member/memberPr1/index.tsx
+243
-5
index.ts
src/pages/member/memberPr1/schema/index.ts
+152
-0
auditPr2.tsx
src/pages/member/memberPr2/auditPr2.tsx
+205
-69
index.tsx
src/pages/member/memberPr2/index.tsx
+243
-5
index.ts
src/pages/member/memberPr2/schema/index.ts
+152
-0
auditPrComfirm.tsx
src/pages/member/memberPrConfirm/auditPrComfirm.tsx
+205
-69
index.tsx
src/pages/member/memberPrConfirm/index.tsx
+243
-5
index.ts
src/pages/member/memberPrConfirm/schema/index.ts
+152
-0
auditPrSubmit.tsx
src/pages/member/memberPrSubmit/auditPrSubmit.tsx
+18
-14
index.ts
src/pages/member/memberPrSubmit/schema/index.ts
+7
-13
No files found.
src/components/NiceForm/components/DateSelect.tsx
View file @
5702bedc
...
...
@@ -17,7 +17,6 @@ const getPrevTime = (num, flag) => {
const
DateSelect
=
(
props
)
=>
{
const
{
value
=
[],
mutators
}
=
props
console
.
log
(
'value'
,
value
)
const
todayStartTime
=
moment
().
startOf
(
'day'
).
format
(
'x'
)
const
nowTime
=
moment
().
format
(
'x'
).
valueOf
()
const
dateMemo
=
useMemo
(()
=>
[
...
...
src/pages/member/memberImport/addMember.tsx
View file @
5702bedc
...
...
@@ -242,6 +242,27 @@ const addMember: React.FC<any> = props => {
FormPath
.
setIn
(
state
,
'props.enum'
,
channelType
);
});
// 如果会员信息存在渠道代理城市信息,设置一下每项的 市级数据
setTimeout
(()
=>
{
console
.
log
(
'memberInfo1'
,
memberInfo
)
if
(
memberInfo
&&
memberInfo
.
areas
.
length
)
{
memberInfo
.
areas
.
forEach
((
area
,
index
)
=>
{
const
{
pcode
,
ccode
}
=
area
;
const
province
=
areas
.
find
(
item
=>
item
.
code
===
pcode
);
if
(
province
&&
province
.
children
)
{
const
city
=
province
.
children
.
find
((
item
:
any
)
=>
item
.
code
===
ccode
);
formActions
.
setFieldState
(
`areas.
${
index
}
.ccode`
,
state
=>
{
FormPath
.
setIn
(
state
,
'props.enum'
,
city
);
}
);
}
});
}
},
2000
);
areasData
=
areas
;
});
});
...
...
@@ -292,6 +313,16 @@ const addMember: React.FC<any> = props => {
}
});
// 主动的渠道信息省级变化,重置市级 value
onFieldInputChange$
(
'areas.*.pcode'
).
subscribe
(
fieldState
=>
{
formActions
.
setFieldState
(
FormPath
.
transform
(
fieldState
.
name
,
/
\d
/
,
$1
=>
`areas.
${
$1
}
.ccode`
),
state
=>
{
FormPath
.
setIn
(
state
,
'value'
,
undefined
);
}
);
});
// 渠道信息省级变化,筛选出对应的市级数据
onFieldValueChange$
(
'areas.*.pcode'
).
subscribe
(
fieldState
=>
{
const
province
=
areasData
.
find
(
item
=>
item
.
code
===
fieldState
.
value
);
...
...
@@ -302,13 +333,14 @@ const addMember: React.FC<any> = props => {
formActions
.
setFieldState
(
FormPath
.
transform
(
fieldState
.
name
,
/
\d
/
,
$1
=>
`areas.
${
$1
}
.ccode`
),
state
=>
{
FormPath
.
setIn
(
state
,
'value'
,
undefined
);
FormPath
.
setIn
(
state
,
'props.enum'
,
city
);
}
);
});
}
console
.
log
(
'memberInfo2'
,
memberInfo
)
return
(
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
...
...
src/pages/member/memberImport/schema/index.tsx
View file @
5702bedc
...
...
@@ -96,7 +96,7 @@ export const importSchema: ISchema = {
allowClear
:
true
,
},
},
'[star
Time, endTim
e]'
:
{
'[star
tDate, endDat
e]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
...
...
src/pages/member/memberMaintain/schema/index.tsx
View file @
5702bedc
...
...
@@ -90,23 +90,14 @@ export const maintianSchema: ISchema = {
allowClear
:
true
,
},
},
timeRange
:
{
'[startDate, endDate]'
:
{
type
:
'string'
,
default
:
0
,
default
:
''
,
'x-component'
:
'dateSelect'
,
'x-component-props'
:
{
placeholder
:
'
请选择'
,
placeholder
:
'
时间范围(全部)'
,
allowClear
:
true
,
},
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
},
],
},
submit
:
{
'x-component'
:
'Submit'
,
...
...
src/pages/member/memberPr1/auditPr1.tsx
View file @
5702bedc
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
PageHeader
,
Tag
,
Descriptions
,
Button
}
from
'antd'
;
import
{
FormOutlined
,
StopOutlined
}
from
'@ant-design/icons'
;
import
{
STATUS_COLOR_MAP
,
STATUS_COLOR_TXT
}
from
'../constant'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PageHeader
,
Tag
,
Descriptions
,
Button
,
Badge
,
Spin
,
Modal
,
}
from
'antd'
;
import
{
FormOutlined
}
from
'@ant-design/icons'
;
import
{
usePageStatus
,
PageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
{
GetMemberAbilityValidateStep1DetailResponse
}
from
'@/services/MemberApi'
;
import
{
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
MEMBER_INNER_STATUS_BADGE_COLOR
,
MEMBER_STATUS_TAG_MAP
,
MEMBER_OUTER_STATUS_TYPE
}
from
'../constant'
;
import
{
auditModalSchema
}
from
'./schema'
;
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
auditPr1
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
pageStatus
,
id
,
validateId
}
=
usePageStatus
();
const
[
detailed
,
setDetailed
]
=
useState
<
any
>
({});
interface
AreaItem
{
name
:
string
;
code
:
string
;
children
:
AreaItem
[];
};
interface
MemberInfo
extends
GetMemberAbilityValidateStep1DetailResponse
{
channelTypeName
?:
string
;
areasInfo
?:
string
[];
};
useEffect
(()
=>
{
const
modalFormActions
=
createFormActions
();
const
{
onFieldValueChange$
,
onFieldInputChange$
,
}
=
FormEffectHooks
;
const
AuditPr1
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
,
validateId
,
pageStatus
}
=
usePageStatus
();
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
MemberInfo
>
(
null
);
const
[
modalVisible
,
setModalVisible
]
=
useState
(
false
);
const
[
infoLoading
,
setInfoLoading
]
=
useState
(
false
);
const
[
confirmLoading
,
setConfirmLoading
]
=
useState
(
false
);
const
getAreasInfo
=
(
vals
:
{
pcode
:
string
,
ccode
:
string
}[]
=
[],
source
:
AreaItem
[]
=
[]
)
=>
{
const
ret
=
[];
vals
.
forEach
(
val
=>
{
const
{
pcode
,
ccode
}
=
val
;
const
province
=
source
.
find
(
item
=>
item
.
code
===
pcode
);
let
str
=
province
.
name
;
// 存在 市级
if
(
ccode
&&
province
&&
province
.
children
)
{
const
city
=
province
.
children
.
find
(
item
=>
item
.
code
===
ccode
);
str
+=
`/
${
city
.
name
}
`
;
}
ret
.
push
(
str
);
});
return
ret
;
};
const
getDetailedInfo
=
()
=>
{
if
(
id
&&
validateId
)
{
setInfoLoading
(
true
);
PublicApi
.
getMemberAbilityValidateStep1Detail
({
memberId
:
id
,
validateId
,
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
;
}
setMemberInfo
(
res
.
data
||
null
);
}).
finally
(()
=>
{
setInfoLoading
(
false
);
});
}
};
useEffect
(()
=>
{
getDetailedInfo
();
},
[]);
// 提交审核
const
handleSubmit
=
values
=>
{
setConfirmLoading
(
true
);
// 调用渠道 Form 的 submit
const
promises
:
any
=
[
PublicApi
.
postMemberAbilityValidateStep1Submit
({
memberId
:
id
,
validateId
:
validateId
,
...
values
,
}),
];
Promise
.
all
(
promises
).
then
(
res
=>
{
setConfirmLoading
(
false
);
setModalVisible
(
false
);
setTimeout
(()
=>
{
history
.
goBack
();
},
1000
);
}).
catch
(
err
=>
{
setConfirmLoading
(
false
);
});
};
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
0
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
HeadInfo
info=
{
{
name
:
'广州市极致皮具有限公司'
,
level
:
1
,
}
}
/>
}
extra=
{
(
<>
<
Button
icon=
{
<
StopOutlined
/>
}
onClick=
{
()
=>
{}
}
>
审核不通过
</
Button
>
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
{}
}
>
提交审核
</
Button
>
</>
)
}
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
0
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
HeadInfo
info=
{
{
name
:
memberInfo
?.
name
,
level
:
1
,
}
}
/>
}
extra=
{
(
<>
{
pageStatus
===
PageStatus
.
EDIT
&&
(
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
setModalVisible
(
true
)
}
>
提交审核
</
Button
>
)
}
</>
)
}
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
123
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
{
123
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
Tag
color=
{
STATUS_COLOR_MAP
[
1
]
}
>
{
STATUS_COLOR_TXT
[
1
]
}
</
Tag
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
Tag
color=
{
STATUS_COLOR_MAP
[
2
]
}
>
{
STATUS_COLOR_TXT
[
2
]
}
</
Tag
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
div
style=
{
{
marginBottom
:
24
,
}
}
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
memberInfo
?.
memberTypeName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
{
memberInfo
?.
roleName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
StatusTag
type=
{
MEMBER_STATUS_TAG_MAP
[
memberInfo
?.
status
]
}
title=
{
memberInfo
?.
statusName
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
StatusTag
type=
{
MEMBER_OUTER_STATUS_TYPE
[
memberInfo
?.
outerStatus
]
}
title=
{
memberInfo
?.
outerStatusName
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"内部状态"
>
<
Badge
color=
{
MEMBER_INNER_STATUS_BADGE_COLOR
[
memberInfo
?.
innerStatus
]
}
text=
{
memberInfo
?.
innerStatusName
}
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
AuditProcess
/>
</
div
>
<
div
style=
{
{
marginBottom
:
24
,
}
}
>
<
AuditProcess
outerVerifySteps=
{
memberInfo
?.
outerVerifySteps
}
innerVerifySteps=
{
memberInfo
?.
innerVerifySteps
}
/>
</
div
>
<
BasicInfo
basic=
{
{
account
:
memberInfo
?.
account
,
phone
:
memberInfo
?.
phone
,
email
:
memberInfo
?.
email
,
created
:
memberInfo
?.
registerTime
,
}
}
channel=
{
{
memberType
:
memberInfo
?.
memberTypeEnum
,
level
:
memberInfo
?.
channelLevelTag
,
type
:
memberInfo
?.
channelTypeName
,
areas
:
memberInfo
?.
areas
,
desc
:
memberInfo
?.
remark
,
}
}
extra=
{
memberInfo
?.
groups
}
outerHistory=
{
memberInfo
?.
outerHistory
}
innerHistory=
{
memberInfo
?.
innerHistory
}
/>
<
BasicInfo
/>
</
PageHeaderWrapper
>
<
Modal
title=
"提交审核"
visible=
{
modalVisible
}
confirmLoading=
{
confirmLoading
}
onOk=
{
()
=>
modalFormActions
.
submit
()
}
onCancel=
{
()
=>
setModalVisible
(
false
)
}
destroyOnClose
>
<
NiceForm
effects=
{
(
$
,
{
setFieldState
})
=>
{
onFieldValueChange$
(
'agree'
).
subscribe
(
fieldState
=>
{
setFieldState
(
'reason'
,
state
=>
{
state
.
visible
=
!
fieldState
.
value
;
});
});
}
}
actions=
{
modalFormActions
}
schema=
{
auditModalSchema
}
onSubmit=
{
handleSubmit
}
/>
</
Modal
>
</
PageHeaderWrapper
>
</
Spin
>
);
};
export
default
a
uditPr1
;
export
default
A
uditPr1
;
src/pages/member/memberPr1/index.tsx
View file @
5702bedc
import
React
from
'react'
;
import
AuditList
from
'../components/auditList'
;
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Card
,
Space
,
Button
,
Badge
,
Popconfirm
}
from
'antd'
;
import
{
ClockCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
auditSchema
}
from
'./schema'
;
import
{
MEMBER_STATUS_TAG_MAP
,
MEMBER_INNER_STATUS_BADGE_COLOR
,
MEMBER_OUTER_STATUS_TYPE
,
}
from
'../constant'
;
import
{
coverColFiltersItem
}
from
'../utils'
;
import
StatusTag
from
'../components/StatusTag'
;
const
memberPr
=
()
=>
{
return
<
AuditList
pageType=
"2"
/>;
const
formActions
=
createFormActions
();
const
MemberPr1
:
React
.
FC
<
{}
>
=
props
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
searchItems
,
setSearchItems
]
=
useState
<
any
>
({});
const
[
filteredInfo
,
setFilteredInfo
]
=
useState
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([]);
const
[
selectedList
,
setSelectList
]
=
useState
<
any
>
([]);
const
handleJumpAudit
=
record
=>
{
history
.
push
(
`/memberCenter/memberAbility/manage/auditPr1?id=
${
record
.
memberId
}
&validateId=
${
record
.
validateId
}
`
);
};
const
defaultColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
dataIndex
:
'memberId'
,
align
:
'center'
,
},
{
title
:
'会员名称'
,
dataIndex
:
'name'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/memberAbility/manage/auditPr1?id=${record.memberId}&validateId=${record.validateId}&preview=1`
}
>
{
text
}
</
EyePreview
>
),
},
{
title
:
'会员类型'
,
dataIndex
:
'memberTypeName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
text
}
</
span
>,
},
{
title
:
'会员角色'
,
dataIndex
:
'roleName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
text
}
</
span
>,
},
{
title
:
'申请来源/时间'
,
dataIndex
:
'sourceName'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
(
<>
<
div
>
{
text
}
</
div
>
<
div
>
<
ClockCircleOutlined
/>
{
record
.
registerTime
}
</
div
>
</>
),
},
{
title
:
'会员状态'
,
dataIndex
:
'statusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
status
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
{
MEMBER_STATUS_TAG_MAP
[
record
.
status
]
}
title=
{
text
}
/>
),
},
{
title
:
'外部状态'
,
dataIndex
:
'outerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
outerStatus
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
{
MEMBER_OUTER_STATUS_TYPE
[
record
.
outerStatus
]
}
title=
{
text
}
/>
),
},
{
title
:
'内部状态'
,
dataIndex
:
'innerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
innerStatus
===
value
,
render
:
(
text
,
record
)
=>
<
Badge
color=
{
MEMBER_INNER_STATUS_BADGE_COLOR
[
record
.
innerStatus
]
}
text=
{
text
}
/>,
},
{
title
:
'操作'
,
dataIndex
:
'option'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Button
type=
"link"
onClick=
{
()
=>
handleJumpAudit
(
record
)
}
>
审核
</
Button
>
),
},
];
const
[
columns
,
setColumns
]
=
useState
<
any
[]
>
(
defaultColumns
);
const
rowSelection
=
{
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
let
result
=
selectedRows
.
map
(
v
=>
({
memberId
:
v
.
memberId
,
validateId
:
v
.
validateId
,
}));
setSelectedRowKeys
(
selectedRowKeys
);
setSelectList
(
result
);
},
selectedRowKeys
:
selectedRowKeys
,
};
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityValidateStep1Page
(
params
);
return
res
.
data
;
};
const
handleBatch
=
()
=>
{
console
.
log
(
'批量'
)
};
// 初始化高级筛选选项
const
fetchSearchItems
=
async
()
=>
{
const
res
=
await
PublicApi
.
getMemberAbilityValidateStep1Pageitems
();
if
(
res
.
code
===
1000
)
{
const
{
data
=
{}
}:
any
=
res
;
const
{
memberTypes
=
[],
status
=
[],
roles
=
[],
levels
=
[],
sources
=
[],
outerStatus
=
[],
innerStatus
=
[],
}
=
data
;
const
newColumns
=
columns
.
slice
();
// filter 0 过滤掉全部选项
coverColFiltersItem
(
newColumns
,
'statusName'
,
status
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
coverColFiltersItem
(
newColumns
,
'outerStatusName'
,
outerStatus
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
coverColFiltersItem
(
newColumns
,
'innerStatusName'
,
innerStatus
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
setColumns
(
newColumns
);
return
{
memberTypeId
:
memberTypes
.
map
(
item
=>
({
label
:
item
.
memberTypeName
,
value
:
item
.
memberTypeId
})),
status
:
status
.
map
(
item
=>
({
label
:
item
.
text
,
value
:
item
.
id
})),
roleId
:
roles
.
map
(
item
=>
({
label
:
item
.
roleName
,
value
:
item
.
roleId
})),
level
:
levels
.
map
(
item
=>
({
label
:
item
.
level
,
value
:
item
.
levelTag
})),
source
:
sources
.
map
(
item
=>
({
label
:
item
.
text
,
value
:
item
.
id
})),
};
}
return
{};
};
const
controllerBtns
=
(
<
Space
>
<
Popconfirm
title=
"是否继续操作 ?"
placement=
"bottom"
onConfirm=
{
handleBatch
}
okText=
"是"
cancelText=
"否"
>
<
Button
>
批量提交审核
</
Button
>
</
Popconfirm
>
</
Space
>
);
return
(
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'memberId'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
rowSelection=
{
rowSelection
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
expressionScope=
{
{
controllerBtns
,
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
,
);
useAsyncInitSelect
(
[
'memberTypeId'
,
'status'
,
'level'
,
'roleId'
,
'level'
,
'source'
],
fetchSearchItems
,
);
}
}
schema=
{
auditSchema
}
/>
}
/>
</
Card
>
);
};
export
default
memberPr
;
export
default
MemberPr1
;
src/pages/member/memberPr1/schema/index.ts
0 → 100644
View file @
5702bedc
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
export
const
auditSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
topLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
},
properties
:
{
ctl
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{controllerBtns}}'
,
},
},
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
colStyle
:
{
marginLeft
:
20
,
},
},
properties
:
{
memberTypeId
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员类型(全部)'
,
allowClear
:
true
,
},
},
status
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员状态(全部)'
,
allowClear
:
true
,
},
},
roleId
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员角色(全部)'
,
allowClear
:
true
,
},
},
level
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员等级(全部)'
,
allowClear
:
true
,
},
},
source
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'申请来源(全部)'
,
allowClear
:
true
,
},
},
'[startDate, endDate]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
'x-component-props'
:
{
placeholder
:
'时间范围(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
export
const
auditModalSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
labelAlign
:
'top'
,
},
properties
:
{
agree
:
{
type
:
'string'
,
default
:
1
,
enum
:
[
{
label
:
'审核通过'
,
value
:
1
},
{
label
:
'审核不通过'
,
value
:
0
},
],
'x-component'
:
'radio'
,
'x-component-props'
:
{},
},
reason
:
{
type
:
'string'
,
title
:
'审核不通过原因'
,
'x-component'
:
'textarea'
,
'x-component-props'
:
{
placeholder
:
'在此输入你的内容,最长120个字符,60个汉字'
,
maxLength
:
60
,
rows
:
5
,
},
'x-rules'
:
[
// {
// required: true,
// message: '请填写审核不通过原因',
// }
],
},
},
},
},
};
src/pages/member/memberPr2/auditPr2.tsx
View file @
5702bedc
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
PageHeader
,
Tag
,
Descriptions
,
Button
}
from
'antd'
;
import
{
FormOutlined
,
StopOutlined
}
from
'@ant-design/icons'
;
import
{
STATUS_COLOR_MAP
,
STATUS_COLOR_TXT
}
from
'../constant'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PageHeader
,
Tag
,
Descriptions
,
Button
,
Badge
,
Spin
,
Modal
,
}
from
'antd'
;
import
{
FormOutlined
}
from
'@ant-design/icons'
;
import
{
usePageStatus
,
PageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
{
GetMemberAbilityValidateStep1DetailResponse
}
from
'@/services/MemberApi'
;
import
{
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
MEMBER_INNER_STATUS_BADGE_COLOR
,
MEMBER_STATUS_TAG_MAP
,
MEMBER_OUTER_STATUS_TYPE
}
from
'../constant'
;
import
{
auditModalSchema
}
from
'./schema'
;
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
auditPr2
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
pageStatus
,
id
,
validateId
}
=
usePageStatus
();
const
[
detailed
,
setDetailed
]
=
useState
<
any
>
({});
interface
AreaItem
{
name
:
string
;
code
:
string
;
children
:
AreaItem
[];
};
interface
MemberInfo
extends
GetMemberAbilityValidateStep1DetailResponse
{
channelTypeName
?:
string
;
areasInfo
?:
string
[];
};
useEffect
(()
=>
{
const
modalFormActions
=
createFormActions
();
const
{
onFieldValueChange$
,
onFieldInputChange$
,
}
=
FormEffectHooks
;
const
AuditPr2
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
,
validateId
,
pageStatus
}
=
usePageStatus
();
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
MemberInfo
>
(
null
);
const
[
modalVisible
,
setModalVisible
]
=
useState
(
false
);
const
[
infoLoading
,
setInfoLoading
]
=
useState
(
false
);
const
[
confirmLoading
,
setConfirmLoading
]
=
useState
(
false
);
const
getAreasInfo
=
(
vals
:
{
pcode
:
string
,
ccode
:
string
}[]
=
[],
source
:
AreaItem
[]
=
[]
)
=>
{
const
ret
=
[];
vals
.
forEach
(
val
=>
{
const
{
pcode
,
ccode
}
=
val
;
const
province
=
source
.
find
(
item
=>
item
.
code
===
pcode
);
let
str
=
province
.
name
;
// 存在 市级
if
(
ccode
&&
province
&&
province
.
children
)
{
const
city
=
province
.
children
.
find
(
item
=>
item
.
code
===
ccode
);
str
+=
`/
${
city
.
name
}
`
;
}
ret
.
push
(
str
);
});
return
ret
;
};
const
getDetailedInfo
=
()
=>
{
if
(
id
&&
validateId
)
{
setInfoLoading
(
true
);
PublicApi
.
getMemberAbilityValidateStep2Detail
({
memberId
:
id
,
validateId
,
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
;
}
setMemberInfo
(
res
.
data
||
null
);
}).
finally
(()
=>
{
setInfoLoading
(
false
);
});
}
};
useEffect
(()
=>
{
getDetailedInfo
();
},
[]);
// 提交审核
const
handleSubmit
=
values
=>
{
setConfirmLoading
(
true
);
// 调用渠道 Form 的 submit
const
promises
:
any
=
[
PublicApi
.
postMemberAbilityValidateStep2Submit
({
memberId
:
id
,
validateId
:
validateId
,
...
values
,
}),
];
Promise
.
all
(
promises
).
then
(
res
=>
{
setConfirmLoading
(
false
);
setModalVisible
(
false
);
setTimeout
(()
=>
{
history
.
goBack
();
},
1000
);
}).
catch
(
err
=>
{
setConfirmLoading
(
false
);
});
};
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
0
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
HeadInfo
info=
{
{
name
:
'广州市极致皮具有限公司'
,
level
:
1
,
}
}
/>
}
extra=
{
(
<>
<
Button
icon=
{
<
StopOutlined
/>
}
onClick=
{
()
=>
{}
}
>
审核不通过
</
Button
>
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
{}
}
>
提交审核
</
Button
>
</>
)
}
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
0
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
HeadInfo
info=
{
{
name
:
memberInfo
?.
name
,
level
:
1
,
}
}
/>
}
extra=
{
(
<>
{
pageStatus
===
PageStatus
.
EDIT
&&
(
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
setModalVisible
(
true
)
}
>
提交审核
</
Button
>
)
}
</>
)
}
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
123
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
{
123
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
Tag
color=
{
STATUS_COLOR_MAP
[
1
]
}
>
{
STATUS_COLOR_TXT
[
1
]
}
</
Tag
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
Tag
color=
{
STATUS_COLOR_MAP
[
2
]
}
>
{
STATUS_COLOR_TXT
[
2
]
}
</
Tag
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
div
style=
{
{
marginBottom
:
24
,
}
}
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
memberInfo
?.
memberTypeName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
{
memberInfo
?.
roleName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
StatusTag
type=
{
MEMBER_STATUS_TAG_MAP
[
memberInfo
?.
status
]
}
title=
{
memberInfo
?.
statusName
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
StatusTag
type=
{
MEMBER_OUTER_STATUS_TYPE
[
memberInfo
?.
outerStatus
]
}
title=
{
memberInfo
?.
outerStatusName
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"内部状态"
>
<
Badge
color=
{
MEMBER_INNER_STATUS_BADGE_COLOR
[
memberInfo
?.
innerStatus
]
}
text=
{
memberInfo
?.
innerStatusName
}
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
AuditProcess
/>
</
div
>
<
div
style=
{
{
marginBottom
:
24
,
}
}
>
<
AuditProcess
outerVerifySteps=
{
memberInfo
?.
outerVerifySteps
}
innerVerifySteps=
{
memberInfo
?.
innerVerifySteps
}
/>
</
div
>
<
BasicInfo
basic=
{
{
account
:
memberInfo
?.
account
,
phone
:
memberInfo
?.
phone
,
email
:
memberInfo
?.
email
,
created
:
memberInfo
?.
registerTime
,
}
}
channel=
{
{
memberType
:
memberInfo
?.
memberTypeEnum
,
level
:
memberInfo
?.
channelLevelTag
,
type
:
memberInfo
?.
channelTypeName
,
areas
:
memberInfo
?.
areas
,
desc
:
memberInfo
?.
remark
,
}
}
extra=
{
memberInfo
?.
groups
}
outerHistory=
{
memberInfo
?.
outerHistory
}
innerHistory=
{
memberInfo
?.
innerHistory
}
/>
<
BasicInfo
/>
</
PageHeaderWrapper
>
<
Modal
title=
"提交审核"
visible=
{
modalVisible
}
confirmLoading=
{
confirmLoading
}
onOk=
{
()
=>
modalFormActions
.
submit
()
}
onCancel=
{
()
=>
setModalVisible
(
false
)
}
destroyOnClose
>
<
NiceForm
effects=
{
(
$
,
{
setFieldState
})
=>
{
onFieldValueChange$
(
'agree'
).
subscribe
(
fieldState
=>
{
setFieldState
(
'reason'
,
state
=>
{
state
.
visible
=
!
fieldState
.
value
;
});
});
}
}
actions=
{
modalFormActions
}
schema=
{
auditModalSchema
}
onSubmit=
{
handleSubmit
}
/>
</
Modal
>
</
PageHeaderWrapper
>
</
Spin
>
);
};
export
default
a
uditPr2
;
export
default
A
uditPr2
;
src/pages/member/memberPr2/index.tsx
View file @
5702bedc
import
React
from
'react'
;
import
AuditList
from
'../components/auditList'
;
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Card
,
Space
,
Button
,
Badge
,
Popconfirm
}
from
'antd'
;
import
{
ClockCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
auditSchema
}
from
'./schema'
;
import
{
MEMBER_STATUS_TAG_MAP
,
MEMBER_INNER_STATUS_BADGE_COLOR
,
MEMBER_OUTER_STATUS_TYPE
,
}
from
'../constant'
;
import
{
coverColFiltersItem
}
from
'../utils'
;
import
StatusTag
from
'../components/StatusTag'
;
const
memberPr
=
()
=>
{
return
<
AuditList
pageType=
"3"
/>;
const
formActions
=
createFormActions
();
const
MemberPr2
:
React
.
FC
<
{}
>
=
props
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
searchItems
,
setSearchItems
]
=
useState
<
any
>
({});
const
[
filteredInfo
,
setFilteredInfo
]
=
useState
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([]);
const
[
selectedList
,
setSelectList
]
=
useState
<
any
>
([]);
const
handleJumpAudit
=
record
=>
{
history
.
push
(
`/memberCenter/memberAbility/manage/auditPr2?id=
${
record
.
memberId
}
&validateId=
${
record
.
validateId
}
`
);
};
const
defaultColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
dataIndex
:
'memberId'
,
align
:
'center'
,
},
{
title
:
'会员名称'
,
dataIndex
:
'name'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/memberAbility/manage/auditPr2?id=${record.memberId}&validateId=${record.validateId}&preview=1`
}
>
{
text
}
</
EyePreview
>
),
},
{
title
:
'会员类型'
,
dataIndex
:
'memberTypeName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
text
}
</
span
>,
},
{
title
:
'会员角色'
,
dataIndex
:
'roleName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
text
}
</
span
>,
},
{
title
:
'申请来源/时间'
,
dataIndex
:
'sourceName'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
(
<>
<
div
>
{
text
}
</
div
>
<
div
>
<
ClockCircleOutlined
/>
{
record
.
registerTime
}
</
div
>
</>
),
},
{
title
:
'会员状态'
,
dataIndex
:
'statusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
status
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
{
MEMBER_STATUS_TAG_MAP
[
record
.
status
]
}
title=
{
text
}
/>
),
},
{
title
:
'外部状态'
,
dataIndex
:
'outerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
outerStatus
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
{
MEMBER_OUTER_STATUS_TYPE
[
record
.
outerStatus
]
}
title=
{
text
}
/>
),
},
{
title
:
'内部状态'
,
dataIndex
:
'innerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
innerStatus
===
value
,
render
:
(
text
,
record
)
=>
<
Badge
color=
{
MEMBER_INNER_STATUS_BADGE_COLOR
[
record
.
innerStatus
]
}
text=
{
text
}
/>,
},
{
title
:
'操作'
,
dataIndex
:
'option'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Button
type=
"link"
onClick=
{
()
=>
handleJumpAudit
(
record
)
}
>
审核
</
Button
>
),
},
];
const
[
columns
,
setColumns
]
=
useState
<
any
[]
>
(
defaultColumns
);
const
rowSelection
=
{
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
let
result
=
selectedRows
.
map
(
v
=>
({
memberId
:
v
.
memberId
,
validateId
:
v
.
validateId
,
}));
setSelectedRowKeys
(
selectedRowKeys
);
setSelectList
(
result
);
},
selectedRowKeys
:
selectedRowKeys
,
};
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityValidateStep2Page
(
params
);
return
res
.
data
;
};
const
handleBatch
=
()
=>
{
console
.
log
(
'批量'
)
};
// 初始化高级筛选选项
const
fetchSearchItems
=
async
()
=>
{
const
res
=
await
PublicApi
.
getMemberAbilityValidateStep2Pageitems
();
if
(
res
.
code
===
1000
)
{
const
{
data
=
{}
}:
any
=
res
;
const
{
memberTypes
=
[],
status
=
[],
roles
=
[],
levels
=
[],
sources
=
[],
outerStatus
=
[],
innerStatus
=
[],
}
=
data
;
const
newColumns
=
columns
.
slice
();
// filter 0 过滤掉全部选项
coverColFiltersItem
(
newColumns
,
'statusName'
,
status
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
coverColFiltersItem
(
newColumns
,
'outerStatusName'
,
outerStatus
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
coverColFiltersItem
(
newColumns
,
'innerStatusName'
,
innerStatus
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
setColumns
(
newColumns
);
return
{
memberTypeId
:
memberTypes
.
map
(
item
=>
({
label
:
item
.
memberTypeName
,
value
:
item
.
memberTypeId
})),
status
:
status
.
map
(
item
=>
({
label
:
item
.
text
,
value
:
item
.
id
})),
roleId
:
roles
.
map
(
item
=>
({
label
:
item
.
roleName
,
value
:
item
.
roleId
})),
level
:
levels
.
map
(
item
=>
({
label
:
item
.
level
,
value
:
item
.
levelTag
})),
source
:
sources
.
map
(
item
=>
({
label
:
item
.
text
,
value
:
item
.
id
})),
};
}
return
{};
};
const
controllerBtns
=
(
<
Space
>
<
Popconfirm
title=
"是否继续操作 ?"
placement=
"bottom"
onConfirm=
{
handleBatch
}
okText=
"是"
cancelText=
"否"
>
<
Button
>
批量提交审核
</
Button
>
</
Popconfirm
>
</
Space
>
);
return
(
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'memberId'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
rowSelection=
{
rowSelection
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
expressionScope=
{
{
controllerBtns
,
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
,
);
useAsyncInitSelect
(
[
'memberTypeId'
,
'status'
,
'level'
,
'roleId'
,
'level'
,
'source'
],
fetchSearchItems
,
);
}
}
schema=
{
auditSchema
}
/>
}
/>
</
Card
>
);
};
export
default
memberPr
;
export
default
MemberPr2
;
src/pages/member/memberPr2/schema/index.ts
0 → 100644
View file @
5702bedc
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
export
const
auditSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
topLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
},
properties
:
{
ctl
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{controllerBtns}}'
,
},
},
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
colStyle
:
{
marginLeft
:
20
,
},
},
properties
:
{
memberTypeId
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员类型(全部)'
,
allowClear
:
true
,
},
},
status
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员状态(全部)'
,
allowClear
:
true
,
},
},
roleId
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员角色(全部)'
,
allowClear
:
true
,
},
},
level
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员等级(全部)'
,
allowClear
:
true
,
},
},
source
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'申请来源(全部)'
,
allowClear
:
true
,
},
},
'[startDate, endDate]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
'x-component-props'
:
{
placeholder
:
'时间范围(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
export
const
auditModalSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
labelAlign
:
'top'
,
},
properties
:
{
agree
:
{
type
:
'string'
,
default
:
1
,
enum
:
[
{
label
:
'审核通过'
,
value
:
1
},
{
label
:
'审核不通过'
,
value
:
0
},
],
'x-component'
:
'radio'
,
'x-component-props'
:
{},
},
reason
:
{
type
:
'string'
,
title
:
'审核不通过原因'
,
'x-component'
:
'textarea'
,
'x-component-props'
:
{
placeholder
:
'在此输入你的内容,最长120个字符,60个汉字'
,
maxLength
:
60
,
rows
:
5
,
},
'x-rules'
:
[
// {
// required: true,
// message: '请填写审核不通过原因',
// }
],
},
},
},
},
};
src/pages/member/memberPrConfirm/auditPrComfirm.tsx
View file @
5702bedc
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
PageHeader
,
Tag
,
Descriptions
,
Button
}
from
'antd'
;
import
{
FormOutlined
,
StopOutlined
}
from
'@ant-design/icons'
;
import
{
STATUS_COLOR_MAP
,
STATUS_COLOR_TXT
}
from
'../constant'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PageHeader
,
Tag
,
Descriptions
,
Button
,
Badge
,
Spin
,
Modal
,
}
from
'antd'
;
import
{
FormOutlined
}
from
'@ant-design/icons'
;
import
{
usePageStatus
,
PageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
{
GetMemberAbilityValidateStep1DetailResponse
}
from
'@/services/MemberApi'
;
import
{
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
MEMBER_INNER_STATUS_BADGE_COLOR
,
MEMBER_STATUS_TAG_MAP
,
MEMBER_OUTER_STATUS_TYPE
}
from
'../constant'
;
import
{
auditModalSchema
}
from
'./schema'
;
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
auditPrComfirm
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
pageStatus
,
id
,
validateId
}
=
usePageStatus
();
const
[
detailed
,
setDetailed
]
=
useState
<
any
>
({});
interface
AreaItem
{
name
:
string
;
code
:
string
;
children
:
AreaItem
[];
};
interface
MemberInfo
extends
GetMemberAbilityValidateStep1DetailResponse
{
channelTypeName
?:
string
;
areasInfo
?:
string
[];
};
useEffect
(()
=>
{
const
modalFormActions
=
createFormActions
();
const
{
onFieldValueChange$
,
onFieldInputChange$
,
}
=
FormEffectHooks
;
const
AuditPrComfirm
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
,
validateId
,
pageStatus
}
=
usePageStatus
();
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
MemberInfo
>
(
null
);
const
[
modalVisible
,
setModalVisible
]
=
useState
(
false
);
const
[
infoLoading
,
setInfoLoading
]
=
useState
(
false
);
const
[
confirmLoading
,
setConfirmLoading
]
=
useState
(
false
);
const
getAreasInfo
=
(
vals
:
{
pcode
:
string
,
ccode
:
string
}[]
=
[],
source
:
AreaItem
[]
=
[]
)
=>
{
const
ret
=
[];
vals
.
forEach
(
val
=>
{
const
{
pcode
,
ccode
}
=
val
;
const
province
=
source
.
find
(
item
=>
item
.
code
===
pcode
);
let
str
=
province
.
name
;
// 存在 市级
if
(
ccode
&&
province
&&
province
.
children
)
{
const
city
=
province
.
children
.
find
(
item
=>
item
.
code
===
ccode
);
str
+=
`/
${
city
.
name
}
`
;
}
ret
.
push
(
str
);
});
return
ret
;
};
const
getDetailedInfo
=
()
=>
{
if
(
id
&&
validateId
)
{
setInfoLoading
(
true
);
PublicApi
.
getMemberAbilityValidateConfirmDetail
({
memberId
:
id
,
validateId
,
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
;
}
setMemberInfo
(
res
.
data
||
null
);
}).
finally
(()
=>
{
setInfoLoading
(
false
);
});
}
};
useEffect
(()
=>
{
getDetailedInfo
();
},
[]);
// 提交审核
const
handleSubmit
=
values
=>
{
setConfirmLoading
(
true
);
// 调用渠道 Form 的 submit
const
promises
:
any
=
[
PublicApi
.
postMemberAbilityValidateConfirmSubmit
({
memberId
:
id
,
validateId
:
validateId
,
...
values
,
}),
];
Promise
.
all
(
promises
).
then
(
res
=>
{
setConfirmLoading
(
false
);
setModalVisible
(
false
);
setTimeout
(()
=>
{
history
.
goBack
();
},
1000
);
}).
catch
(
err
=>
{
setConfirmLoading
(
false
);
});
};
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
HeadInfo
info=
{
{
name
:
'广州市极致皮具有限公司'
,
level
:
1
,
}
}
/>
}
extra=
{
(
<>
<
Button
icon=
{
<
StopOutlined
/>
}
onClick=
{
()
=>
{}
}
>
审核不通过
</
Button
>
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
{}
}
>
审核通过
</
Button
>
</>
)
}
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
0
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
HeadInfo
info=
{
{
name
:
memberInfo
?.
name
,
level
:
1
,
}
}
/>
}
extra=
{
(
<>
{
pageStatus
===
PageStatus
.
EDIT
&&
(
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
setModalVisible
(
true
)
}
>
提交审核
</
Button
>
)
}
</>
)
}
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
123
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
{
123
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
Tag
color=
{
STATUS_COLOR_MAP
[
1
]
}
>
{
STATUS_COLOR_TXT
[
1
]
}
</
Tag
>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
Tag
color=
{
STATUS_COLOR_MAP
[
2
]
}
>
{
STATUS_COLOR_TXT
[
2
]
}
</
Tag
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
div
style=
{
{
marginBottom
:
24
,
}
}
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"会员类型"
>
{
memberInfo
?.
memberTypeName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员角色"
span=
{
2
}
>
{
memberInfo
?.
roleName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"会员状态"
>
<
StatusTag
type=
{
MEMBER_STATUS_TAG_MAP
[
memberInfo
?.
status
]
}
title=
{
memberInfo
?.
statusName
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"外部状态"
>
<
StatusTag
type=
{
MEMBER_OUTER_STATUS_TYPE
[
memberInfo
?.
outerStatus
]
}
title=
{
memberInfo
?.
outerStatusName
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"内部状态"
>
<
Badge
color=
{
MEMBER_INNER_STATUS_BADGE_COLOR
[
memberInfo
?.
innerStatus
]
}
text=
{
memberInfo
?.
innerStatusName
}
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
AuditProcess
/>
</
div
>
<
div
style=
{
{
marginBottom
:
24
,
}
}
>
<
AuditProcess
outerVerifySteps=
{
memberInfo
?.
outerVerifySteps
}
innerVerifySteps=
{
memberInfo
?.
innerVerifySteps
}
/>
</
div
>
<
BasicInfo
basic=
{
{
account
:
memberInfo
?.
account
,
phone
:
memberInfo
?.
phone
,
email
:
memberInfo
?.
email
,
created
:
memberInfo
?.
registerTime
,
}
}
channel=
{
{
memberType
:
memberInfo
?.
memberTypeEnum
,
level
:
memberInfo
?.
channelLevelTag
,
type
:
memberInfo
?.
channelTypeName
,
areas
:
memberInfo
?.
areas
,
desc
:
memberInfo
?.
remark
,
}
}
extra=
{
memberInfo
?.
groups
}
outerHistory=
{
memberInfo
?.
outerHistory
}
innerHistory=
{
memberInfo
?.
innerHistory
}
/>
<
BasicInfo
/>
</
PageHeaderWrapper
>
<
Modal
title=
"提交审核"
visible=
{
modalVisible
}
confirmLoading=
{
confirmLoading
}
onOk=
{
()
=>
modalFormActions
.
submit
()
}
onCancel=
{
()
=>
setModalVisible
(
false
)
}
destroyOnClose
>
<
NiceForm
effects=
{
(
$
,
{
setFieldState
})
=>
{
onFieldValueChange$
(
'agree'
).
subscribe
(
fieldState
=>
{
setFieldState
(
'reason'
,
state
=>
{
state
.
visible
=
!
fieldState
.
value
;
});
});
}
}
actions=
{
modalFormActions
}
schema=
{
auditModalSchema
}
onSubmit=
{
handleSubmit
}
/>
</
Modal
>
</
PageHeaderWrapper
>
</
Spin
>
);
};
export
default
a
uditPrComfirm
;
export
default
A
uditPrComfirm
;
src/pages/member/memberPrConfirm/index.tsx
View file @
5702bedc
import
React
from
'react'
;
import
AuditList
from
'../components/auditList'
;
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Card
,
Space
,
Button
,
Badge
,
Popconfirm
}
from
'antd'
;
import
{
ClockCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
auditSchema
}
from
'./schema'
;
import
{
MEMBER_STATUS_TAG_MAP
,
MEMBER_INNER_STATUS_BADGE_COLOR
,
MEMBER_OUTER_STATUS_TYPE
,
}
from
'../constant'
;
import
{
coverColFiltersItem
}
from
'../utils'
;
import
StatusTag
from
'../components/StatusTag'
;
const
memberPrConfirm
=
()
=>
{
return
<
AuditList
pageType=
"4"
/>;
const
formActions
=
createFormActions
();
const
MemberPrConfirm
:
React
.
FC
<
{}
>
=
props
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
searchItems
,
setSearchItems
]
=
useState
<
any
>
({});
const
[
filteredInfo
,
setFilteredInfo
]
=
useState
<
any
>
({});
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([]);
const
[
selectedList
,
setSelectList
]
=
useState
<
any
>
([]);
const
handleJumpAudit
=
record
=>
{
history
.
push
(
`/memberCenter/memberAbility/manage/auditPrComfirm?id=
${
record
.
memberId
}
&validateId=
${
record
.
validateId
}
`
);
};
const
defaultColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'ID'
,
dataIndex
:
'memberId'
,
align
:
'center'
,
},
{
title
:
'会员名称'
,
dataIndex
:
'name'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
EyePreview
url=
{
`/memberCenter/memberAbility/manage/auditPrComfirm?id=${record.memberId}&validateId=${record.validateId}&preview=1`
}
>
{
text
}
</
EyePreview
>
),
},
{
title
:
'会员类型'
,
dataIndex
:
'memberTypeName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
text
}
</
span
>,
},
{
title
:
'会员角色'
,
dataIndex
:
'roleName'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
span
>
{
text
}
</
span
>,
},
{
title
:
'申请来源/时间'
,
dataIndex
:
'sourceName'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
(
<>
<
div
>
{
text
}
</
div
>
<
div
>
<
ClockCircleOutlined
/>
{
record
.
registerTime
}
</
div
>
</>
),
},
{
title
:
'会员状态'
,
dataIndex
:
'statusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
status
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
{
MEMBER_STATUS_TAG_MAP
[
record
.
status
]
}
title=
{
text
}
/>
),
},
{
title
:
'外部状态'
,
dataIndex
:
'outerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
outerStatus
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
{
MEMBER_OUTER_STATUS_TYPE
[
record
.
outerStatus
]
}
title=
{
text
}
/>
),
},
{
title
:
'内部状态'
,
dataIndex
:
'innerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
innerStatus
===
value
,
render
:
(
text
,
record
)
=>
<
Badge
color=
{
MEMBER_INNER_STATUS_BADGE_COLOR
[
record
.
innerStatus
]
}
text=
{
text
}
/>,
},
{
title
:
'操作'
,
dataIndex
:
'option'
,
align
:
'center'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(
<
Button
type=
"link"
onClick=
{
()
=>
handleJumpAudit
(
record
)
}
>
确认审核结果
</
Button
>
),
},
];
const
[
columns
,
setColumns
]
=
useState
<
any
[]
>
(
defaultColumns
);
const
rowSelection
=
{
onChange
:
(
selectedRowKeys
:
any
,
selectedRows
:
any
)
=>
{
let
result
=
selectedRows
.
map
(
v
=>
({
memberId
:
v
.
memberId
,
validateId
:
v
.
validateId
,
}));
setSelectedRowKeys
(
selectedRowKeys
);
setSelectList
(
result
);
},
selectedRowKeys
:
selectedRowKeys
,
};
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityValidateConfirmPage
(
params
);
return
res
.
data
;
};
const
handleBatch
=
()
=>
{
console
.
log
(
'批量'
)
};
// 初始化高级筛选选项
const
fetchSearchItems
=
async
()
=>
{
const
res
=
await
PublicApi
.
getMemberAbilityValidateConfirmPageitems
();
if
(
res
.
code
===
1000
)
{
const
{
data
=
{}
}:
any
=
res
;
const
{
memberTypes
=
[],
status
=
[],
roles
=
[],
levels
=
[],
sources
=
[],
outerStatus
=
[],
innerStatus
=
[],
}
=
data
;
const
newColumns
=
columns
.
slice
();
// filter 0 过滤掉全部选项
coverColFiltersItem
(
newColumns
,
'statusName'
,
status
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
coverColFiltersItem
(
newColumns
,
'outerStatusName'
,
outerStatus
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
coverColFiltersItem
(
newColumns
,
'innerStatusName'
,
innerStatus
.
map
(
item
=>
({
text
:
item
.
text
,
value
:
item
.
id
})).
filter
(
item
=>
item
.
value
!==
0
),
);
setColumns
(
newColumns
);
return
{
memberTypeId
:
memberTypes
.
map
(
item
=>
({
label
:
item
.
memberTypeName
,
value
:
item
.
memberTypeId
})),
status
:
status
.
map
(
item
=>
({
label
:
item
.
text
,
value
:
item
.
id
})),
roleId
:
roles
.
map
(
item
=>
({
label
:
item
.
roleName
,
value
:
item
.
roleId
})),
level
:
levels
.
map
(
item
=>
({
label
:
item
.
level
,
value
:
item
.
levelTag
})),
source
:
sources
.
map
(
item
=>
({
label
:
item
.
text
,
value
:
item
.
id
})),
};
}
return
{};
};
const
controllerBtns
=
(
<
Space
>
<
Popconfirm
title=
"是否继续操作 ?"
placement=
"bottom"
onConfirm=
{
handleBatch
}
okText=
"是"
cancelText=
"否"
>
<
Button
>
批量提交审核
</
Button
>
</
Popconfirm
>
</
Space
>
);
return
(
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'memberId'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
rowSelection=
{
rowSelection
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
expressionScope=
{
{
controllerBtns
,
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
,
);
useAsyncInitSelect
(
[
'memberTypeId'
,
'status'
,
'level'
,
'roleId'
,
'level'
,
'source'
],
fetchSearchItems
,
);
}
}
schema=
{
auditSchema
}
/>
}
/>
</
Card
>
);
};
export
default
m
emberPrConfirm
;
export
default
M
emberPrConfirm
;
src/pages/member/memberPrConfirm/schema/index.ts
0 → 100644
View file @
5702bedc
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
export
const
auditSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
topLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
},
properties
:
{
ctl
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{controllerBtns}}'
,
},
},
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
colStyle
:
{
marginLeft
:
20
,
},
},
properties
:
{
memberTypeId
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员类型(全部)'
,
allowClear
:
true
,
},
},
status
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员状态(全部)'
,
allowClear
:
true
,
},
},
roleId
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员角色(全部)'
,
allowClear
:
true
,
},
},
level
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'会员等级(全部)'
,
allowClear
:
true
,
},
},
source
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'申请来源(全部)'
,
allowClear
:
true
,
},
},
'[startDate, endDate]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
'x-component-props'
:
{
placeholder
:
'时间范围(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
export
const
auditModalSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
MEGA_LAYOUT
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
labelAlign
:
'top'
,
},
properties
:
{
agree
:
{
type
:
'string'
,
default
:
1
,
enum
:
[
{
label
:
'审核通过'
,
value
:
1
},
{
label
:
'审核不通过'
,
value
:
0
},
],
'x-component'
:
'radio'
,
'x-component-props'
:
{},
},
reason
:
{
type
:
'string'
,
title
:
'审核不通过原因'
,
'x-component'
:
'textarea'
,
'x-component-props'
:
{
placeholder
:
'在此输入你的内容,最长120个字符,60个汉字'
,
maxLength
:
60
,
rows
:
5
,
},
'x-rules'
:
[
// {
// required: true,
// message: '请填写审核不通过原因',
// }
],
},
},
},
},
};
src/pages/member/memberPrSubmit/auditPrSubmit.tsx
View file @
5702bedc
...
...
@@ -11,7 +11,7 @@ import {
Modal
,
}
from
'antd'
;
import
{
FormOutlined
}
from
'@ant-design/icons'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
usePageStatus
,
PageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetMemberAbilityValidateCommitDetailResponse
}
from
'@/services/MemberApi'
;
import
{
createAsyncFormActions
,
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
...
...
@@ -41,8 +41,8 @@ const {
onFieldInputChange$
,
}
=
FormEffectHooks
;
const
a
uditPrSubmit
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
,
validateId
,
p
review
}
=
usePageStatus
();
const
A
uditPrSubmit
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
,
validateId
,
p
ageStatus
}
=
usePageStatus
();
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
MemberInfo
>
(
null
);
const
[
modalVisible
,
setModalVisible
]
=
useState
(
false
);
const
[
infoLoading
,
setInfoLoading
]
=
useState
(
false
);
...
...
@@ -153,6 +153,8 @@ const auditPrSubmit: React.FC<{}> = () => {
memberId
:
id
,
validateId
,
...
rest
,
},
{
ctlType
:
'none'
,
});
};
...
...
@@ -160,7 +162,6 @@ const auditPrSubmit: React.FC<{}> = () => {
const
handleSubmit
=
values
=>
{
setConfirmLoading
(
true
);
// 调用渠道 Form 的 submit
formActions
.
submit
();
const
promises
:
any
=
[
formActions
.
submit
(),
PublicApi
.
postMemberAbilityValidateCommitSubmit
({
...
...
@@ -171,6 +172,7 @@ const auditPrSubmit: React.FC<{}> = () => {
];
Promise
.
all
(
promises
).
then
(
res
=>
{
setConfirmLoading
(
false
);
setModalVisible
(
false
);
setTimeout
(()
=>
{
history
.
goBack
();
...
...
@@ -180,8 +182,6 @@ const auditPrSubmit: React.FC<{}> = () => {
});
};
console
.
log
(
'preview'
,
preview
)
return
(
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
...
...
@@ -199,13 +199,17 @@ const auditPrSubmit: React.FC<{}> = () => {
/>
}
extra=
{
(
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
setModalVisible
(
true
)
}
>
提交审核
</
Button
>
<>
{
pageStatus
===
PageStatus
.
EDIT
&&
(
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
setModalVisible
(
true
)
}
>
提交审核
</
Button
>
)
}
</>
)
}
>
<
Descriptions
...
...
@@ -303,4 +307,4 @@ const auditPrSubmit: React.FC<{}> = () => {
);
};
export
default
a
uditPrSubmit
;
export
default
A
uditPrSubmit
;
src/pages/member/memberPrSubmit/schema/index.ts
View file @
5702bedc
...
...
@@ -85,20 +85,14 @@ export const auditSchema: ISchema = {
allowClear
:
true
,
},
},
timeRange
:
{
'[startDate, endDate]'
:
{
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
:
''
,
'x-component'
:
'dateSelect'
,
'x-component-props'
:
{
placeholder
:
'时间范围(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
...
...
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