Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
admin-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
admin-ci-test
Commits
74586053
提交
74586053
authored
8月 03, 2023
作者:
龚洪江
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
功能:飞手认证,客户实名认证联调
上级
af391b01
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
661 行增加
和
31 行删除
+661
-31
customManageType.ts
src/api/interface/customManageType.ts
+13
-0
flyerCenterType.ts
src/api/interface/flyerCenterType.ts
+49
-20
customManage.ts
src/api/modules/customManage.ts
+4
-0
flyerCenterAPI.ts
src/api/modules/flyerCenterAPI.ts
+22
-1
index.tsx
src/pages/customManage/customVerification/details/index.tsx
+53
-0
index.tsx
src/pages/customManage/customVerification/list/index.tsx
+13
-1
index.tsx
src/pages/flyerCenter/flyerManage/flyerAuthDaily/index.tsx
+122
-0
index.tsx
...flyerManage/flyerDetail/components/approveModal/index.tsx
+80
-0
index.scss
src/pages/flyerCenter/flyerManage/flyerDetail/index.scss
+24
-0
index.tsx
src/pages/flyerCenter/flyerManage/flyerDetail/index.tsx
+117
-0
index.tsx
...erManage/flyerList/components/updateRemarkModal/index.tsx
+45
-0
index.tsx
src/pages/flyerCenter/flyerManage/flyerList/index.tsx
+62
-5
index.tsx
...sAddOrEditOrDetail/components/skuAddOrEditModal/index.tsx
+2
-2
router.tsx
src/router/router.tsx
+55
-2
没有找到文件。
src/api/interface/customManageType.ts
浏览文件 @
74586053
...
...
@@ -249,3 +249,16 @@ export type listAuthPageType = InterItemFunction<
createTime
:
string
;
}[]
>
;
//实名认证详情返回类型
export
type
authDetailType
=
InterFunction
<
{
id
:
number
},
{
backIdImg
:
string
;
checkStatus
:
number
;
frontIdImg
:
string
;
id
:
number
;
idNumber
:
string
;
userAccountId
:
number
;
userName
:
string
;
}
>
;
src/api/interface/flyerCenterType.ts
浏览文件 @
74586053
import
{
InterFunction
,
InterItemFunction
}
from
'~/api/interface'
;
//飞手列表
type
flyerItemType
=
{
abilityUrl
:
string
;
age
:
number
;
areaNumber
:
number
;
auditStatus
:
number
;
createTime
:
string
;
id
:
number
;
individualResume
:
string
;
licenseNumber
:
number
;
licenseType
:
string
;
licenseUrl
:
string
;
phoneNum
:
number
;
pilotAbility
:
{
abilityId
:
number
;
abilityName
:
string
;
id
:
number
;
}[];
remark
:
string
;
residentCity
:
string
;
sex
:
number
;
timeOfApplication
:
string
;
updateTime
:
string
;
userAccountId
:
number
;
userName
:
number
;
yearsOfWorking
:
number
;
};
export
type
backListPilotType
=
InterItemFunction
<
{
abilityId
?:
number
;
...
...
@@ -10,32 +36,35 @@ export type backListPilotType = InterItemFunction<
id
?:
number
;
licenseType
?:
string
;
},
flyerItemType
[]
>
;
//修改备注
export
type
updateRemarkType
=
InterFunction
<
{
id
:
number
;
remark
:
string
},
any
>
;
//能力类型
export
type
abilityListType
=
InterFunction
<
any
,
{
abilityId
:
number
;
abilityName
:
string
}[]
>
;
//飞手认证日志类型
export
type
backPilotLogListType
=
InterItemFunction
<
{
accountNumber
?:
string
},
{
abilityUrl
:
string
;
age
:
number
;
areaNumber
:
number
;
auditStatus
:
number
;
certificationDate
:
number
;
certificationMessage
:
number
;
createTime
:
string
;
id
:
number
;
individualResume
:
string
;
licenseNumber
:
number
;
licenseType
:
string
;
licenseUrl
:
string
;
operatorUserAccount
:
number
;
operatorUserId
:
number
;
operatorUserName
:
number
;
phoneNum
:
number
;
pilotAbility
:
{
abilityId
:
number
;
abilityName
:
string
;
id
:
number
;
}[];
remark
:
string
;
residentCity
:
string
;
sex
:
number
;
timeOfApplication
:
string
;
updateTime
:
string
;
userAccountId
:
number
;
userName
:
number
;
yearsOfWorking
:
number
;
}[]
>
;
//能力类型
export
type
abilityListType
=
InterFunction
<
any
,
{
abilityId
:
number
;
abilityName
:
string
}[]
>
;
//飞手详情
export
type
backDetailPilotType
=
InterFunction
<
{
id
:
number
},
flyerItemType
>
;
//飞手审批
export
type
updateAuditStatusType
=
InterFunction
<
{
auditStatus
:
number
;
reasonId
?:
number
;
id
:
number
},
any
>
;
//飞手审批不通过原因列表
export
type
backListReasonType
=
InterFunction
<
any
,
{
id
:
number
;
reason
:
string
}[]
>
;
src/api/modules/customManage.ts
浏览文件 @
74586053
...
...
@@ -2,6 +2,7 @@ import axios from '../request';
import
{
applyTagDetails
,
approvalApplyTag
,
authDetailType
,
changeUserTagNew
,
changeUserTagType
,
CompanyListTag
,
...
...
@@ -59,4 +60,7 @@ export class CustomManageAPI {
// 客户-实名认证列表
static
getListAuth
:
listAuthPageType
=
(
data
)
=>
axios
.
post
(
'/userapp/real-name-auth/listPage'
,
data
);
// 客户-实名认证详情
static
getAuthDetail
:
authDetailType
=
(
params
)
=>
axios
.
get
(
'/userapp/real-name-auth/detail'
,
{
params
});
}
src/api/modules/flyerCenterAPI.ts
浏览文件 @
74586053
import
{
abilityListType
,
backListPilotType
}
from
'~/api/interface/flyerCenterType'
;
import
{
abilityListType
,
backDetailPilotType
,
backListPilotType
,
backListReasonType
,
backPilotLogListType
,
updateAuditStatusType
,
updateRemarkType
,
}
from
'~/api/interface/flyerCenterType'
;
import
axios
from
'../request'
;
export
class
FlyerCenterAPI
{
//飞手列表
static
getBackListPilot
:
backListPilotType
=
(
data
)
=>
axios
.
post
(
'/userapp/pilot/backListPilot'
,
data
);
//修改备注
static
updateRemark
:
updateRemarkType
=
(
data
)
=>
axios
.
post
(
'/userapp/pilot/updateRemark'
,
data
);
// 飞手能力类型
static
getAbilityList
:
abilityListType
=
()
=>
axios
.
get
(
'/userapp/pilot/abilityList'
);
// 飞手认证日志
static
getBackPilotLogList
:
backPilotLogListType
=
(
data
)
=>
axios
.
post
(
'/userapp/pilot/backPilotLogList'
,
data
);
// 飞手详情
static
getBackDetailPilot
:
backDetailPilotType
=
(
params
)
=>
axios
.
get
(
'/userapp/pilot/backDetailPilot'
,
{
params
});
// 飞手审批
static
updateAuditStatus
:
updateAuditStatusType
=
(
data
)
=>
axios
.
post
(
'/userapp/pilot/updateAuditStatus'
,
data
);
// 飞手审批不通过原因
static
getBackListReason
:
backListReasonType
=
()
=>
axios
.
get
(
'/userapp/pilot/backListReason'
);
}
src/pages/customManage/customVerification/details/index.tsx
0 → 100644
浏览文件 @
74586053
import
{
CustomManageAPI
}
from
'~/api'
;
import
{
useSearchParams
,
useNavigate
}
from
'react-router-dom'
;
import
{
useEffect
,
useState
}
from
'react'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
authDetailType
}
from
'~/api/interface/customManageType'
;
import
{
Button
,
Descriptions
,
Image
}
from
'antd'
;
//实名认证详情返回类信息
type
detailType
=
InterDataType
<
authDetailType
>
;
const
CustomVerificationDetail
=
()
=>
{
const
[
searchParams
]
=
useSearchParams
();
const
navigate
=
useNavigate
();
const
[
detail
,
setDetail
]
=
useState
<
detailType
>
();
const
getAuthDetail
=
(
id
:
number
)
=>
{
CustomManageAPI
.
getAuthDetail
({
id
}).
then
(({
result
})
=>
{
setDetail
(
result
);
});
};
//返回
const
backRoute
=
()
=>
{
navigate
(
-
1
);
};
useEffect
(()
=>
{
getAuthDetail
(
Number
(
searchParams
.
get
(
'id'
)));
},
[]);
return
(
<
div
className=
'custom-verification-detail'
>
<
Descriptions
title=
'认证信息'
bordered
column=
{
2
}
extra=
{
<
Button
type=
'primary'
onClick=
{
backRoute
}
>
返回
</
Button
>
}
>
<
Descriptions
.
Item
label=
'姓名'
>
{
detail
?.
userName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'身份证号码'
>
{
detail
?.
idNumber
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'身份证正面'
>
<
Image
src=
{
detail
?.
frontIdImg
}
width=
{
50
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'身份证反面'
>
<
Image
src=
{
detail
?.
backIdImg
}
width=
{
50
}
/>
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
);
};
export
default
CustomVerificationDetail
;
src/pages/customManage/customVerification/index.tsx
→
src/pages/customManage/customVerification/
list/
index.tsx
浏览文件 @
74586053
import
SearchBox
,
{
searchColumns
as
searchColumnsType
}
from
'~/components/search-box'
;
import
{
Table
}
from
'antd'
;
import
{
Button
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
useEffect
,
useState
}
from
'react'
;
import
{
CustomManageAPI
}
from
'~/api'
;
import
{
InterDataType
,
InterReqListType
,
PaginationProps
}
from
'~/api/interface'
;
import
{
listAuthPageType
}
from
'~/api/interface/customManageType'
;
import
{
useNavigate
}
from
'react-router-dom'
;
//实名认证列表返回类型
type
listAuthType
=
InterDataType
<
listAuthPageType
>
[
'list'
];
...
...
@@ -12,6 +13,8 @@ type listAuthType = InterDataType<listAuthPageType>['list'];
type
listAuthParametersType
=
InterReqListType
<
listAuthPageType
>
;
const
CustomVerification
=
()
=>
{
const
navigate
=
useNavigate
();
const
searchColumns
:
searchColumnsType
[]
=
[
{
name
:
'keyword'
,
...
...
@@ -54,6 +57,11 @@ const CustomVerification = () => {
{
title
:
'操作'
,
align
:
'center'
,
render
:
(
_text
:
string
,
record
)
=>
(
<
Button
type=
'link'
onClick=
{
()
=>
toCustomVerificationDetail
(
record
)
}
>
详情
</
Button
>
),
},
];
const
[
tableData
,
setTableData
]
=
useState
<
listAuthType
>
([]);
...
...
@@ -89,6 +97,10 @@ const CustomVerification = () => {
setQuery
(
value
);
getAuthList
(
value
);
};
//认证详情
const
toCustomVerificationDetail
=
(
record
:
listAuthType
[
0
])
=>
{
navigate
({
pathname
:
'/customManage/customVerificationDetail'
,
search
:
`id=
${
record
.
id
}
`
});
};
useEffect
(()
=>
{
getAuthList
();
...
...
src/pages/flyerCenter/flyerManage/flyerAuthDaily/index.tsx
0 → 100644
浏览文件 @
74586053
import
SearchBox
,
{
searchColumns
as
searchColumnsType
}
from
'~/components/search-box'
;
import
{
Button
,
Table
}
from
'antd'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
FlyerCenterAPI
}
from
'~/api'
;
import
{
useEffect
,
useState
}
from
'react'
;
import
{
InterDataType
,
InterReqListType
,
PaginationProps
}
from
'~/api/interface'
;
import
{
backPilotLogListType
}
from
'~/api/interface/flyerCenterType'
;
import
{
useNavigate
}
from
'react-router-dom'
;
//日志列表返回类型
type
logListType
=
InterDataType
<
backPilotLogListType
>
[
'list'
];
//日志列表请求类型
type
logParametersType
=
InterReqListType
<
backPilotLogListType
>
;
const
FlyerAuthDaily
=
()
=>
{
const
navigate
=
useNavigate
();
const
searchColumns
:
searchColumnsType
[]
=
[
{
label
:
'账号'
,
type
:
'input'
,
placeholder
:
'请输入UID,姓名或手机号'
,
name
:
'accountNumber'
,
},
];
const
tableColumns
:
ColumnsType
<
logListType
[
0
]
>
=
[
{
title
:
'审批及认证时间'
,
align
:
'center'
,
dataIndex
:
'certificationDate'
,
},
{
title
:
'账号'
,
align
:
'center'
,
dataIndex
:
'userName'
,
},
{
title
:
'手机号'
,
align
:
'center'
,
dataIndex
:
'phoneNum'
,
},
{
title
:
'申请及审批信息'
,
align
:
'center'
,
dataIndex
:
'certificationMessage'
,
},
{
title
:
'操作人员'
,
align
:
'center'
,
dataIndex
:
'operatorUserName'
,
},
];
const
[
tableData
,
setTableData
]
=
useState
<
logListType
>
([]);
const
[
pagination
,
setPagination
]
=
useState
<
PaginationProps
&
{
totalCount
:
number
}
>
({
pageNo
:
1
,
pageSize
:
10
,
totalCount
:
0
,
});
const
[
query
,
setQuery
]
=
useState
<
logParametersType
>
();
//认证日志列表
const
getBackPilotLogList
=
(
query
?:
logParametersType
)
=>
{
FlyerCenterAPI
.
getBackPilotLogList
({
pageNo
:
pagination
.
pageNo
,
pageSize
:
pagination
.
pageSize
,
...
query
,
}).
then
(({
result
})
=>
{
pagination
.
totalCount
=
result
.
totalCount
;
setPagination
(
pagination
);
setTableData
(
result
.
list
||
[]);
});
};
//分页
const
paginationChange
=
(
pageNo
:
number
,
pageSize
:
number
)
=>
{
pagination
.
pageNo
=
pageNo
;
pagination
.
pageSize
=
pageSize
;
getBackPilotLogList
(
query
);
};
//筛选成功
const
searchSuccess
=
(
value
:
logParametersType
)
=>
{
pagination
.
pageNo
=
1
;
pagination
.
pageSize
=
10
;
setQuery
(
value
);
getBackPilotLogList
(
value
);
};
//返回
const
backRoute
=
()
=>
{
navigate
(
-
1
);
};
useEffect
(()
=>
{
getBackPilotLogList
();
},
[]);
return
(
<
div
className=
'flyer-auth-daily'
>
<
SearchBox
search=
{
searchColumns
}
searchData=
{
searchSuccess
}
otherChild=
{
<
Button
type=
'primary'
onClick=
{
backRoute
}
>
返回
</
Button
>
}
/>
<
Table
columns=
{
tableColumns
}
dataSource=
{
tableData
}
pagination=
{
{
total
:
pagination
.
totalCount
,
pageSize
:
pagination
.
pageSize
,
current
:
pagination
.
pageNo
,
showSizeChanger
:
true
,
showQuickJumper
:
true
,
onChange
:
(
page
:
number
,
pageSize
:
number
)
=>
paginationChange
(
page
,
pageSize
),
showTotal
:
(
total
,
range
)
=>
`当前 ${range[0]}-${range[1]} 条记录 / 共 ${total} 条数据`
,
}
}
/>
</
div
>
);
};
export
default
FlyerAuthDaily
;
src/pages/flyerCenter/flyerManage/flyerDetail/components/approveModal/index.tsx
0 → 100644
浏览文件 @
74586053
import
{
Form
,
message
,
Modal
,
ModalProps
,
Radio
,
RadioChangeEvent
,
Select
}
from
'antd'
;
import
{
FC
,
useState
}
from
'react'
;
import
{
FlyerCenterAPI
}
from
'~/api'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
backListReasonType
}
from
'~/api/interface/flyerCenterType'
;
interface
selfProps
{
onCancel
:
()
=>
void
;
onOk
:
()
=>
void
;
flyerId
:
number
;
}
//原因列表返回类型
type
reasonType
=
InterDataType
<
backListReasonType
>
;
const
ApproveModal
:
FC
<
ModalProps
&
selfProps
>
=
({
open
,
onCancel
,
onOk
,
flyerId
})
=>
{
const
[
form
]
=
Form
.
useForm
();
const
[
auditStatus
,
setAuditStatus
]
=
useState
<
number
>
(
1
);
const
[
reasonList
,
setReasonList
]
=
useState
<
reasonType
>
([]);
const
handleCancel
=
()
=>
{
form
.
resetFields
();
setAuditStatus
(
-
1
);
onCancel
();
};
const
handleOk
=
()
=>
{
form
.
validateFields
().
then
((
values
)
=>
{
FlyerCenterAPI
.
updateAuditStatus
({
...
values
,
id
:
flyerId
}).
then
(({
code
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
'审批成功'
);
onOk
();
form
.
resetFields
();
setAuditStatus
(
-
1
);
}
});
});
};
const
radioChange
=
(
e
:
RadioChangeEvent
)
=>
{
if
(
!
e
.
target
.
value
)
{
getBackListReason
();
}
setAuditStatus
(
e
.
target
.
value
);
};
//不通过原因列表
const
getBackListReason
=
()
=>
{
FlyerCenterAPI
.
getBackListReason
().
then
(({
result
})
=>
{
setReasonList
(
result
||
[]);
});
};
return
(
<
Modal
open=
{
open
}
onCancel=
{
handleCancel
}
onOk=
{
handleOk
}
title=
'审批飞手'
>
<
Form
form=
{
form
}
initialValues=
{
{
auditStatus
:
1
}
}
>
<
Form
.
Item
label=
'状态'
name=
'auditStatus'
>
<
Radio
.
Group
onChange=
{
radioChange
}
>
<
Radio
value=
{
1
}
>
已通过
</
Radio
>
<
Radio
value=
{
0
}
>
未通过
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
{
auditStatus
?
(
''
)
:
(
<
Form
.
Item
label=
'原因'
name=
'reasonId'
rules=
{
[{
required
:
true
,
message
:
'请选择原因'
}]
}
>
<
Select
placeholder=
'请选择原因'
>
{
reasonList
.
map
((
v
)
=>
(
<
Select
.
Option
value=
{
v
.
id
}
key=
{
v
.
id
}
>
{
v
.
reason
}
</
Select
.
Option
>
))
}
</
Select
>
</
Form
.
Item
>
)
}
</
Form
>
</
Modal
>
);
};
export
default
ApproveModal
;
src/pages/flyerCenter/flyerManage/flyerDetail/index.scss
0 → 100644
浏览文件 @
74586053
.flyer-detail
{
height
:
100%
;
padding
:
20px
;
box-sizing
:
border-box
;
.ant-row
{
height
:
100%
;
}
&
-header
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin-bottom
:
20px
;
}
&
-auth
{
}
&
-ability
{
.ability-img
{
margin-right
:
10px
;
margin-bottom
:
10px
;
}
}
}
src/pages/flyerCenter/flyerManage/flyerDetail/index.tsx
0 → 100644
浏览文件 @
74586053
import
{
FlyerCenterAPI
}
from
'~/api'
;
import
{
useSearchParams
,
useNavigate
}
from
'react-router-dom'
;
import
{
useEffect
,
useState
}
from
'react'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
backDetailPilotType
}
from
'~/api/interface/flyerCenterType'
;
import
{
Button
,
Col
,
Descriptions
,
Image
,
Row
,
Tag
}
from
'antd'
;
import
'./index.scss'
;
import
ApproveModal
from
'./components/approveModal'
;
//飞手详情返回类型
type
flyerDetailType
=
InterDataType
<
backDetailPilotType
>
;
const
FlyerDetail
=
()
=>
{
const
[
searchParams
]
=
useSearchParams
();
const
navigate
=
useNavigate
();
const
[
isApprove
,
setIsApprove
]
=
useState
<
boolean
>
(
false
);
const
[
flyerId
,
setFlyerId
]
=
useState
<
number
>
(
-
1
);
const
[
flyerDetail
,
setFlyerDetail
]
=
useState
<
flyerDetailType
>
();
const
[
approveModalShow
,
setApproveModalShow
]
=
useState
<
boolean
>
(
false
);
const
getFlyerDetail
=
(
id
:
number
)
=>
{
FlyerCenterAPI
.
getBackDetailPilot
({
id
}).
then
(({
result
})
=>
{
setFlyerDetail
(
result
);
});
};
//审批弹窗
const
approveFlyerClick
=
()
=>
{
setApproveModalShow
(
true
);
};
const
approveModalCancel
=
()
=>
{
setApproveModalShow
(
false
);
};
const
approveModalOk
=
()
=>
{
setApproveModalShow
(
false
);
getFlyerDetail
(
flyerId
);
};
//返回
const
backRoute
=
()
=>
{
navigate
(
-
1
);
};
useEffect
(()
=>
{
getFlyerDetail
(
Number
(
searchParams
.
get
(
'id'
)));
setFlyerId
(
Number
(
searchParams
.
get
(
'id'
)));
setIsApprove
(
!!
searchParams
.
get
(
'isApprove'
));
},
[]);
return
(
<
div
className=
'flyer-detail'
>
<
div
className=
'flyer-detail-header'
>
<
div
className=
'header-info'
>
{
flyerDetail
?.
userAccountId
}
(
{
flyerDetail
?.
userName
}
)
</
div
>
<
div
className=
'header-operate'
>
{
isApprove
&&
flyerDetail
?.
auditStatus
===
0
?
(
<
Button
type=
'primary'
style=
{
{
marginRight
:
'10px'
}
}
onClick=
{
approveFlyerClick
}
>
审批
</
Button
>
)
:
(
''
)
}
<
Button
type=
'primary'
onClick=
{
backRoute
}
>
返回
</
Button
>
</
div
>
</
div
>
<
Row
justify=
'space-between'
>
<
Col
span=
{
11
}
>
<
div
className=
'flyer-detail-auth'
>
<
Descriptions
title=
'执照认证'
bordered
column=
{
1
}
labelStyle=
{
{
width
:
'100px'
}
}
>
<
Descriptions
.
Item
label=
'执照类型'
>
{
flyerDetail
?.
licenseType
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'执照编号'
>
{
flyerDetail
?.
licenseNumber
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'执照图片'
>
<
Image
src=
{
flyerDetail
?.
licenseUrl
}
width=
{
100
}
/>
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'个人简介'
>
{
flyerDetail
?.
individualResume
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
</
Col
>
<
Col
span=
{
11
}
>
<
div
className=
'flyer-detail-ability'
>
<
Descriptions
title=
'能力认证'
bordered
column=
{
1
}
labelStyle=
{
{
minWidth
:
'100px'
}
}
>
<
Descriptions
.
Item
label=
'常驻地'
>
{
flyerDetail
?.
residentCity
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'工作年限'
>
{
flyerDetail
?.
yearsOfWorking
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'能力'
>
{
flyerDetail
?.
pilotAbility
.
map
((
v
)
=>
(
<
Tag
key=
{
v
.
id
}
>
{
v
.
abilityName
}
</
Tag
>
))
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
'业务案例'
>
{
flyerDetail
?.
abilityUrl
?
(
<
Image
.
PreviewGroup
items=
{
JSON
.
parse
(
flyerDetail
?.
abilityUrl
)
}
>
{
JSON
.
parse
(
flyerDetail
?.
abilityUrl
).
map
((
v
:
string
,
index
:
number
)
=>
(
<
Image
src=
{
v
}
key=
{
index
}
width=
{
100
}
rootClassName=
'ability-img'
/>
))
}
</
Image
.
PreviewGroup
>
)
:
(
''
)
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
</
Col
>
</
Row
>
{
/* 审批弹窗*/
}
<
ApproveModal
open=
{
approveModalShow
}
onCancel=
{
approveModalCancel
}
onOk=
{
approveModalOk
}
flyerId=
{
flyerId
}
/>
</
div
>
);
};
export
default
FlyerDetail
;
src/pages/flyerCenter/flyerManage/flyerList/components/updateRemarkModal/index.tsx
0 → 100644
浏览文件 @
74586053
import
{
Form
,
Input
,
message
,
Modal
,
ModalProps
}
from
'antd'
;
import
{
FC
,
useEffect
}
from
'react'
;
import
{
InterDataType
}
from
'~/api/interface'
;
import
{
backListPilotType
}
from
'~/api/interface/flyerCenterType'
;
import
{
FlyerCenterAPI
}
from
'~/api'
;
//飞手列表返回类型
type
flyerListType
=
InterDataType
<
backListPilotType
>
[
'list'
];
interface
selfProps
{
onOk
:
()
=>
void
;
flyerItem
:
flyerListType
[
0
]
|
undefined
;
}
const
UpdateRemarkModal
:
FC
<
ModalProps
&
selfProps
>
=
({
open
,
onCancel
,
onOk
,
flyerItem
})
=>
{
const
[
form
]
=
Form
.
useForm
<
{
remark
:
string
}
>
();
const
handleOk
=
()
=>
{
if
(
flyerItem
)
{
form
.
validateFields
().
then
((
values
)
=>
{
FlyerCenterAPI
.
updateRemark
({
id
:
flyerItem
.
id
,
...
values
}).
then
(({
code
})
=>
{
if
(
code
===
'200'
)
{
message
.
success
(
'编辑备注成功'
);
onOk
();
}
});
});
}
};
useEffect
(()
=>
{
if
(
flyerItem
)
{
form
.
setFieldValue
(
'remark'
,
flyerItem
.
remark
);
}
},
[
flyerItem
]);
return
(
<
Modal
open=
{
open
}
onCancel=
{
onCancel
}
onOk=
{
handleOk
}
title=
'备注修改'
>
<
Form
form=
{
form
}
>
<
Form
.
Item
label=
'备注'
name=
'remark'
>
<
Input
.
TextArea
placeholder=
'请输入备注'
maxLength=
{
70
}
showCount
rows=
{
4
}
/>
</
Form
.
Item
>
</
Form
>
</
Modal
>
);
};
export
default
UpdateRemarkModal
;
src/pages/flyerCenter/flyerList/index.tsx
→
src/pages/flyerCenter/flyer
Manage/flyer
List/index.tsx
浏览文件 @
74586053
...
...
@@ -6,6 +6,8 @@ import { useEffect, useState } from 'react';
import
{
InterDataType
,
InterReqListType
,
PaginationProps
}
from
'~/api/interface'
;
import
{
backListPilotType
}
from
'~/api/interface/flyerCenterType'
;
import
{
getSecondDistrictInfoType
}
from
'~/api/interface/commonType'
;
import
{
useNavigate
}
from
'react-router-dom'
;
import
UpdateRemarkModal
from
'./components/updateRemarkModal'
;
//飞手列表返回类型
type
flyerListType
=
InterDataType
<
backListPilotType
>
[
'list'
];
...
...
@@ -15,6 +17,8 @@ type flyerListParameters = InterReqListType<backListPilotType>;
type
locationType
=
InterDataType
<
getSecondDistrictInfoType
>
;
const
FlyerList
=
()
=>
{
const
navigate
=
useNavigate
();
const
[
searchColumns
,
setSearchColumns
]
=
useState
<
searchColumnsType
[]
>
([
{
name
:
'accountNumber'
,
...
...
@@ -51,7 +55,7 @@ const FlyerList = () => {
const
tableColumns
:
ColumnsType
<
flyerListType
[
0
]
>
=
[
{
title
:
'UID'
,
dataIndex
:
'u
i
d'
,
dataIndex
:
'u
serAccountI
d'
,
align
:
'center'
,
},
{
...
...
@@ -91,29 +95,43 @@ const FlyerList = () => {
title
:
'备注'
,
align
:
'center'
,
dataIndex
:
'remark'
,
render
:
(
text
:
string
,
record
)
=>
(
<
Button
type=
'link'
onClick=
{
()
=>
updateRemarkClick
(
record
)
}
>
{
text
||
'--'
}
</
Button
>
),
},
{
title
:
'操作'
,
align
:
'center'
,
render
:
(
_text
:
string
,
record
)
=>
(
<>
<
Button
type=
'link'
danger
disabled=
{
record
.
auditStatus
!==
0
}
>
<
Button
type=
'link'
danger
disabled=
{
record
.
auditStatus
!==
0
}
onClick=
{
()
=>
toFlyerApprove
(
record
)
}
>
审批
</
Button
>
<
Button
type=
'link'
>
变更
</
Button
>
<
Button
type=
'link'
>
详情
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
toFlyerDetail
(
record
)
}
>
详情
</
Button
>
</>
),
},
];
const
[
tableData
,
setTableData
]
=
useState
<
flyerListType
>
([]);
const
[
currentTableItem
,
setCurrentTableItem
]
=
useState
<
flyerListType
[
0
]
>
();
const
[
query
,
setQuery
]
=
useState
<
flyerListParameters
>
();
const
[
pagination
,
setPagination
]
=
useState
<
PaginationProps
&
{
totalCount
:
number
}
>
({
pageNo
:
1
,
pageSize
:
10
,
totalCount
:
0
,
});
//修改备注弹窗
const
[
updateRemarkModalShow
,
setUpdateRemarkModalShow
]
=
useState
<
boolean
>
(
false
);
//飞手列表
const
getFlyerList
=
(
query
?:
flyerListParameters
)
=>
{
...
...
@@ -165,6 +183,30 @@ const FlyerList = () => {
setSearchColumns
([...
searchColumns
]);
});
};
//认证日志页面
const
toFlyerAuthDaily
=
()
=>
{
navigate
(
'/flyerCenter/flyerAuthDaily'
);
};
//飞手审批页面
const
toFlyerApprove
=
(
record
:
flyerListType
[
0
])
=>
{
navigate
({
pathname
:
'/flyerCenter/flyerDetail'
,
search
:
`id=
${
record
.
id
}
&isApprove=1`
});
};
//飞手详情页面
const
toFlyerDetail
=
(
record
:
flyerListType
[
0
])
=>
{
navigate
({
pathname
:
'/flyerCenter/flyerApprove'
,
search
:
`id=
${
record
.
id
}
`
});
};
//修改备注
const
updateRemarkClick
=
(
record
:
flyerListType
[
0
])
=>
{
setCurrentTableItem
(
record
);
setUpdateRemarkModalShow
(
true
);
};
const
updateRemarkModalCancel
=
()
=>
{
setUpdateRemarkModalShow
(
false
);
};
const
updateRemarkModalOk
=
()
=>
{
getFlyerList
(
query
);
setUpdateRemarkModalShow
(
false
);
};
useEffect
(()
=>
{
getFlyerList
();
...
...
@@ -174,7 +216,15 @@ const FlyerList = () => {
return
(
<
div
className=
'flyer-list'
>
<
SearchBox
search=
{
searchColumns
}
searchData=
{
searchSuccess
}
/>
<
SearchBox
search=
{
searchColumns
}
searchData=
{
searchSuccess
}
sufFixBtn=
{
<
Button
type=
'primary'
onClick=
{
toFlyerAuthDaily
}
>
认证日志
</
Button
>
}
/>
<
Table
bordered
columns=
{
tableColumns
}
...
...
@@ -190,6 +240,13 @@ const FlyerList = () => {
showTotal
:
(
total
,
range
)
=>
`当前 ${range[0]}-${range[1]} 条记录 / 共 ${total} 条数据`
,
}
}
/>
{
/*修改备注*/
}
<
UpdateRemarkModal
open=
{
updateRemarkModalShow
}
onOk=
{
updateRemarkModalOk
}
onCancel=
{
updateRemarkModalCancel
}
flyerItem=
{
currentTableItem
}
/>
</
div
>
);
};
...
...
src/pages/mallManage/mallGoods/goodsAddOrEditOrDetail/components/skuAddOrEditModal/index.tsx
浏览文件 @
74586053
...
...
@@ -79,7 +79,7 @@ const SkuAddOrEditModal: FC<ModalProps & selfProps> = ({
return
Promise
.
reject
(
new
Error
(
'请输入正整数'
));
}
}
else
{
return
Promise
.
re
ject
(
new
Error
(
'请输入库存'
)
);
return
Promise
.
re
solve
(
);
}
};
...
...
@@ -153,7 +153,7 @@ const SkuAddOrEditModal: FC<ModalProps & selfProps> = ({
editable
:
true
,
align
:
'center'
,
dataIndex
:
'stock'
,
rules
:
[{
required
:
tru
e
,
validator
:
stockPriceValidator
}],
rules
:
[{
required
:
fals
e
,
validator
:
stockPriceValidator
}],
inputType
:
'number'
,
},
{
...
...
src/router/router.tsx
浏览文件 @
74586053
...
...
@@ -56,7 +56,12 @@ import LoginView from '~/pages/common/login';
import
CustomListView
from
'~/pages/customManage/customList'
;
import
CustomMoneyView
from
'~/pages/customManage/customMoney'
;
import
CustomMoneyDetail
from
'~/pages/customManage/customMoney/detail'
;
const
CustomVerificationView
=
React
.
lazy
(()
=>
import
(
'~/pages/customManage/customVerification'
));
const
CustomVerificationView
=
React
.
lazy
(
()
=>
import
(
'~/pages/customManage/customVerification/list'
),
);
//实名认证
const
CustomVerificationDetailView
=
React
.
lazy
(
()
=>
import
(
'~/pages/customManage/customVerification/details'
),
);
//资源管理
import
MaterielManageView
from
'~/pages/resourceManage/materielManage'
;
...
...
@@ -117,7 +122,11 @@ const AddInstitutionsView = React.lazy(
);
//机构上传
//飞手中心
const
FlyerListView
=
React
.
lazy
(()
=>
import
(
'~/pages/flyerCenter/flyerList'
));
const
FlyerListView
=
React
.
lazy
(()
=>
import
(
'~/pages/flyerCenter/flyerManage/flyerList'
));
//飞手列表
const
FlyerAuthDailyView
=
React
.
lazy
(
()
=>
import
(
'~/pages/flyerCenter/flyerManage/flyerAuthDaily'
),
);
//飞手认证日志;
const
FlyerDetailsView
=
React
.
lazy
(()
=>
import
(
'~/pages/flyerCenter/flyerManage/flyerDetail'
));
//飞手详情、飞手审批
// 系统管理
import
AccountManageView
from
'~/pages/systemManage/accountManage'
;
...
...
@@ -220,6 +229,17 @@ export const routerList: Array<RouteObjectType> = [
},
},
{
path
:
'/customManage/customVerificationDetail'
,
element
:
withLoadingComponent
(<
CustomVerificationDetailView
/>),
errorElement
:
<
ErrorPage
/>,
meta
:
{
id
:
240
,
title
:
'实名认证详情'
,
hidden
:
true
,
icon
:
<
SolutionOutlined
/>,
},
},
{
path
:
'/customManage/customList/detail'
,
element
:
withLoadingComponent
(<
CustomListDetail
/>),
errorElement
:
<
ErrorPage
/>,
...
...
@@ -990,6 +1010,39 @@ export const routerList: Array<RouteObjectType> = [
icon
:
<
UserOutlined
/>,
},
},
{
path
:
'/flyerCenter/flyerAuthDaily'
,
element
:
withLoadingComponent
(<
FlyerAuthDailyView
/>),
errorElement
:
<
ErrorPage
/>,
meta
:
{
id
:
1520
,
title
:
'认证日志'
,
hidden
:
true
,
icon
:
<
UserOutlined
/>,
},
},
{
path
:
'/flyerCenter/flyerDetail'
,
element
:
withLoadingComponent
(<
FlyerDetailsView
/>),
errorElement
:
<
ErrorPage
/>,
meta
:
{
id
:
1530
,
title
:
'飞手详情'
,
hidden
:
true
,
icon
:
<
UserOutlined
/>,
},
},
{
path
:
'/flyerCenter/flyerApprove'
,
element
:
withLoadingComponent
(<
FlyerDetailsView
/>),
errorElement
:
<
ErrorPage
/>,
meta
:
{
id
:
1540
,
title
:
'飞手审批'
,
hidden
:
true
,
icon
:
<
UserOutlined
/>,
},
},
],
},
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论