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
478d92e5
Commit
478d92e5
authored
Jun 04, 2021
by
XieZhiXiong
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-srm' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev-srm
parents
60dbb23a
e68b4510
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
900 additions
and
533 deletions
+900
-533
proxy.ts
config/proxy.ts
+7
-5
memberRoute.ts
config/routes/memberRoute.ts
+7
-1
index.tsx
src/components/FlowRecords/index.tsx
+0
-0
table.tsx
src/pages/contract/funds/addbill/components/table.tsx
+8
-4
index.tsx
src/pages/contract/manage/QueryList/index.tsx
+3
-0
FormList.tsx
src/pages/contract/manage/add/components/FormList.tsx
+4
-3
information.tsx
src/pages/contract/manage/add/components/information.tsx
+2
-2
contracAdd.tsx
src/pages/contract/manage/add/contracAdd.tsx
+1
-0
useInitialValue.tsx
src/pages/member/common/hooks/useInitialValue.tsx
+2
-2
index.tsx
src/pages/member/components/CustomizeQueryList/index.tsx
+2
-2
detail.tsx
src/pages/member/memberEvaluate/allQuery/detail.tsx
+38
-114
index.tsx
src/pages/member/memberEvaluate/allQuery/index.tsx
+10
-16
detail.tsx
src/pages/member/memberEvaluate/columns/detail.tsx
+51
-18
index.tsx
...ember/memberEvaluate/components/EvaluateProject/index.tsx
+4
-4
index.tsx
...r/memberEvaluate/components/FormilySelectMember/index.tsx
+11
-25
schema.tsx
.../memberEvaluate/components/FormilySelectMember/schema.tsx
+10
-3
add.tsx
src/pages/member/memberEvaluate/createEvaluate/add.tsx
+0
-0
index.tsx
src/pages/member/memberEvaluate/createEvaluate/index.tsx
+51
-11
useEvaluateColumn.tsx
src/pages/member/memberEvaluate/hooks/useEvaluateColumn.tsx
+54
-40
useGetDetailCommon.tsx
src/pages/member/memberEvaluate/hooks/useGetDetailCommon.tsx
+34
-22
add.tsx
src/pages/member/memberEvaluate/schema/add.tsx
+15
-12
detail.tsx
src/pages/member/memberEvaluate/tobeEvaluate/detail.tsx
+87
-58
index.tsx
src/pages/member/memberEvaluate/tobeEvaluate/index.tsx
+16
-10
schema.tsx
src/pages/member/memberEvaluate/tobeEvaluate/schema.tsx
+34
-33
detail.tsx
src/pages/member/memberEvaluate/tobeInformed/detail.tsx
+45
-17
index.tsx
src/pages/member/memberEvaluate/tobeInformed/index.tsx
+32
-7
detail.tsx
src/pages/member/memberEvaluate/tobeReviewI/detail.tsx
+47
-21
index.tsx
src/pages/member/memberEvaluate/tobeReviewI/index.tsx
+29
-7
detail.tsx
src/pages/member/memberEvaluate/tobeReviewII/detail.tsx
+49
-23
index.tsx
src/pages/member/memberEvaluate/tobeReviewII/index.tsx
+31
-9
detail.tsx
src/pages/member/memberEvaluate/tobeSubmitSummary/detail.tsx
+129
-25
index.tsx
src/pages/member/memberEvaluate/tobeSubmitSummary/index.tsx
+22
-17
schema.tsx
src/pages/member/memberEvaluate/tobeSubmitSummary/schema.tsx
+19
-11
index.tsx
...saction/purchaseAbility/components/modalOperate/index.tsx
+1
-3
addRule.tsx
src/pages/transaction/transactionRules/addRule.tsx
+4
-0
RuleSetting.tsx
...s/transaction/transactionRules/components/RuleSetting.tsx
+25
-8
index.tsx
src/pages/transaction/transactionRules/schema/index.tsx
+16
-0
No files found.
config/proxy.ts
View file @
478d92e5
export
default
{
// '/api/member': {
// 'target': 'http://10.0.0.12:8100',
// 'changeOrigin': true,
// 'pathRewrite': { '^/api/member': '/member' },
// },
'/api'
:
{
'target'
:
process
.
env
.
BACK_GATEWAY
||
'http://10.0.0.25:8100/'
,
// 'target': 'http://10.0.0.17:8100/' || 'http://10.0.0.25:8100/',
// 'target': 'http://192.168.168.84:8700/' || 'http://10.0.0.25:8100/',
'target'
:
process
.
env
.
BACK_GATEWAY
||
'http://10.0.0.10:8100/'
,
'changeOrigin'
:
true
,
'pathRewrite'
:
{
'^/api'
:
''
},
'pathRewrite'
:
{
'^/api'
:
''
},
}
}
config/routes/memberRoute.ts
View file @
478d92e5
...
...
@@ -494,12 +494,18 @@ const MemberRoute: RouterChild = {
component
:
'@/pages/member/memberEvaluate/createEvaluate/index'
,
},
{
path
:
'/memberCenter/memberAbility/memberEvaluate/
evaluate/
createEvaluate/add'
,
path
:
'/memberCenter/memberAbility/memberEvaluate/createEvaluate/add'
,
name
:
'新建考评单'
,
component
:
'@/pages/member/memberEvaluate/createEvaluate/add'
,
hideInMenu
:
true
,
},
{
path
:
'/memberCenter/memberAbility/memberEvaluate/createEvaluate/edit'
,
name
:
'修改考评单'
,
component
:
'@/pages/member/memberEvaluate/createEvaluate/add'
,
hideInMenu
:
true
,
},
{
path
:
'/memberCenter/memberAbility/memberEvaluate/tobeEvaluate'
,
name
:
'待考评打分'
,
component
:
'@/pages/member/memberEvaluate/tobeEvaluate/index'
,
...
...
src/components/FlowRecords/index.tsx
View file @
478d92e5
This diff is collapsed.
Click to expand it.
src/pages/contract/funds/addbill/components/table.tsx
View file @
478d92e5
...
...
@@ -254,10 +254,14 @@ const table = (props: any) => {
params
.
contractId
=
id
;
return
new
Promise
(
resolve
=>
{
PublicApi
.
getContractApplyAmountContractOrderPageList
({
...
params
}).
then
(
res
=>
{
res
.
data
.
data
.
findIndex
((
item
,
index
)
=>
{
item
.
orderTime
=
item
.
orderTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
item
.
keyId
=
index
+
1
;
})
if
(
res
.
code
==
1000
)
{
if
(
res
.
data
.
data
)
{
res
.
data
.
data
.
findIndex
((
item
,
index
)
=>
{
item
.
orderTime
=
item
.
orderTime
?
moment
().
format
(
'YYYY-MM-DD'
)
:
''
;
item
.
keyId
=
index
+
1
;
})
}
}
resolve
(
res
.
data
)
})
})
...
...
src/pages/contract/manage/QueryList/index.tsx
View file @
478d92e5
...
...
@@ -129,6 +129,9 @@ const QueryList = () => {
{
record
.
outerStatus
==
6
?
<
span
style=
{
{
color
:
'#00B37A'
,
marginRight
:
20
,
cursor
:
'pointer'
,
}
}
onClick=
{
()
=>
like
(
record
)
}
>
合同变更
</
span
>
:
<
span
>
</
span
>
}
{
/* {
record.outerStatus == 9 ? <span style={{ color: '#00B37A', marginRight: 20, cursor: 'pointer', }} >合同已到期</span> : <span> </span>
} */
}
</
div
>
)
}
...
...
src/pages/contract/manage/add/components/FormList.tsx
View file @
478d92e5
...
...
@@ -12,7 +12,7 @@ const { Option } = Select;
const
{
Text
}
=
Typography
;
const
FormList
=
(
props
:
any
)
=>
{
const
{
currentRef
,
Row
,
sourceType
}
=
props
;
const
{
currentRef
,
Row
,
sourceType
,
onBadge
}
=
props
;
console
.
log
(
sourceType
)
const
refs
=
useRef
({});
/* 显示模态框 */
...
...
@@ -81,7 +81,7 @@ const FormList = (props: any) => {
}
console
.
log
(
sourceType
)
console
.
log
(
parmas
,
'请求参数是啥'
)
fn
(
parmas
).
then
(
res
=>
{
console
.
log
(
res
);
if
(
res
.
code
===
1000
)
{
...
...
@@ -108,7 +108,7 @@ const FormList = (props: any) => {
associatedGoods
:
sourceType
==
'1'
?
item
.
productAttributeJson
:
sourceType
==
'2'
?
item
.
commodityName
:
''
// 关联品牌
}
})
console
.
log
(
data
,
'拉拉'
)
setData
(
data
)
}
})
...
...
@@ -358,6 +358,7 @@ const FormList = (props: any) => {
<
Button
block
type=
'dashed'
><
PlusOutlined
/>
选择采购物料
</
Button
>
</
div
>
}
<
Table
rowKey=
{
'index'
}
dataSource=
{
dataList
}
...
...
src/pages/contract/manage/add/components/information.tsx
View file @
478d92e5
import
React
,
{
useRef
,
useState
,
useEffect
,
forwardRef
}
from
'react'
;
import
{
Button
,
Input
,
Select
,
DatePicker
,
Form
,
Drawer
}
from
'antd'
import
{
Button
,
Input
,
Select
,
DatePicker
,
Form
,
Drawer
,
message
}
from
'antd'
import
{
LinkOutlined
,
}
from
'@ant-design/icons'
...
...
@@ -206,7 +206,7 @@ const Information = (props: any) => {
})
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
message
.
info
(
'请输入基本资料必填内容'
)
}
})
})
...
...
src/pages/contract/manage/add/contracAdd.tsx
View file @
478d92e5
...
...
@@ -91,6 +91,7 @@ const Add: React.FC<{}> = (props: any) => {
/* 提交*/
const
submit
=
async
()
=>
{
/* 基本信息 */
console
.
log
(
'basicsVO'
,
'拉拉'
)
const
basicsVO
=
await
currentBasic
.
current
.
get
();
let
totalAmount
=
0
;
if
(
basicsVO
.
data
.
sourceId
==
undefined
||
basicsVO
.
data
.
sourceId
==
''
)
{
...
...
src/pages/member/common/hooks/useInitialValue.tsx
View file @
478d92e5
...
...
@@ -18,7 +18,7 @@ type Ires = {
message
:
string
}
function
useInitialValue
<
T
,
P
>
(
api
:
(
params
:
P
,
headers
?:
HeadersType
)
=>
Promise
<
T
&
Ires
>
,
params
:
P
,
headers
?:
HeadersType
):
{
loading
:
boolean
,
initialValue
:
T
,
refresh
:
(
params
:
P
)
=>
void
}
{
function
useInitialValue
<
T
,
P
>
(
api
:
(
params
:
P
,
headers
?:
HeadersType
)
=>
Promise
<
T
&
Ires
>
,
params
:
P
,
headers
?:
HeadersType
):
{
loading
:
boolean
,
initialValue
:
T
,
refresh
:
(
params
:
P
)
=>
void
,
setInitialValue
:
any
}
{
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
const
[
initialValue
,
setInitialValue
]
=
useState
<
null
|
Ires
[
"data"
]
>
(
null
);
...
...
@@ -42,7 +42,7 @@ function useInitialValue<T, P>(api: (params: P, headers?: HeadersType) => Promis
fetchData
(
params
)
},
[])
return
{
loading
,
initialValue
:
initialValue
as
T
,
refresh
}
return
{
loading
,
initialValue
:
initialValue
as
T
,
refresh
,
setInitialValue
}
}
export
default
useInitialValue
src/pages/member/components/CustomizeQueryList/index.tsx
View file @
478d92e5
...
...
@@ -25,7 +25,7 @@ interface Iprops {
type
?:
'radio'
|
"checkbox"
,
onSelect
?:
(
record
:
any
,
selected
:
boolean
,
selectedRows
:
any
[])
=>
void
,
selectedRowKeys
?:
string
[]
|
number
[]
}
,
}
&
{
[
key
:
string
]:
any
}
,
ref?: any,
}
...
...
@@ -50,7 +50,7 @@ const CustomizeQueryList: React.FC<Iprops> = React.forwardRef((props: Iprops, re
const
onRresh
=
(
values
:
any
)
=>
{
const
data
=
formatData
?.(
values
)
||
values
;
r
ef
.
current
?.
reload
(
data
);
tableR
ef
.
current
?.
reload
(
data
);
}
return
(
...
...
src/pages/member/memberEvaluate/allQuery/detail.tsx
View file @
478d92e5
import
React
from
'react'
;
import
React
,
{
useMemo
}
from
'react'
;
import
{
Spin
,
Card
,
Steps
,
Table
,
Progress
,
Button
}
from
'antd'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
{
projectColumns
,
recordColumn
}
from
'../columns/detail'
;
import
CustomizeColumn
from
'@/components/CustomizeColumn'
;
import
AuditProcess
from
'@/components/AuditProcess'
;
import
useGetDetailCommon
from
'../hooks/useGetDetailCommon'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetMemberAppraisalSummaryGetResponse
}
from
'@/services/MemberV2Api'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
const
{
Step
}
=
Steps
;
const
EvaluateDetail
=
()
=>
{
const
anchorHeader
=
[
{
key
:
'progress'
,
name
:
'流转进度'
,
},
{
key
:
'detail'
,
name
:
'基本信息'
,
},
{
key
:
'project'
,
name
:
'考评项目'
},
{
key
:
'result'
,
name
:
'考评结果'
},
{
key
:
'record'
,
name
:
'流转记录'
}
]
const
columnList
=
[
{
title
:
'考聘工单号'
,
value
:
'theme'
,
},
{
title
:
'会员名称'
,
value
:
'memberName'
,
},
{
title
:
'附件'
,
value
:
(
<
div
>
123
</
div
>
)
},
{
title
:
'考评主题'
,
value
:
(
<
div
>
123
</
div
>
)
},
{
title
:
'考察范围'
,
value
:
'date'
},
{
title
:
''
,
value
:
''
,
},
{
title
:
"内部状态"
,
value
:
<
div
>
一通报考评结果
</
div
>
},
{
title
:
"考评完成时间"
,
value
:
'reason'
},
]
const
resultList
=
{
col
:
[
{
title
:
'考评最终分'
,
dataIndex
:
'score'
,
render
:
(
value
)
=>
{
return
(
<
div
style=
{
{
width
:
'80px'
,
height
:
'40px'
}
}
>
<
Progress
type=
"dashboard"
percent=
{
75
}
gapDegree=
{
145
}
width=
{
80
}
/>
</
div
>
)
}
},
],
col2
:
[
{
title
:
'考察日期'
,
dataIndex
:
'date'
},
{
title
:
'考察代表'
,
dataIndex
:
'present'
},
{
title
:
"考察原因"
,
dataIndex
:
'reason'
}
],
col3
:
[
{
title
:
'考察要求附件'
,
dataIndex
:
'file'
,
render
:
(
value
?)
=>
{
return
(
<
div
>
132
</
div
>
)
}
},
]
}
const
{
id
}
=
usePageStatus
();
const
params
=
useMemo
(()
=>
{
return
id
?
{
id
:
id
.
toString
()
}
:
null
},
[
id
]);
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetMemberAppraisalSummaryGetResponse
,
{
id
:
string
}
>
(
PublicApi
.
getMemberAppraisalSummaryGet
,
params
)
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[
'result'
],
initialValue
:
initialValue
})
return
(
<
Spin
spinning=
{
false
}
>
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
`温州市隆昌皮业有限公式`
}
title=
{
initialValue
?.
subject
}
anchors=
{
anchorHeader
}
// extra={headExtra && headExtra(detailInfo, returnAddress, exchangeAddress)}
>
<
AuditProcess
title=
"流转进度"
id=
"progress"
/>
<
AuditProcess
innerVerifySteps=
{
initialValue
&&
initialValue
.
verifySteps
?
initialValue
.
verifySteps
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
stepName
,
roleName
:
item
.
roleName
,
status
:
initialValue
?.
currentStep
>
item
.
step
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
verifySteps
)
}
id=
"progress"
/>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"detail"
data=
{
column
List
}
title=
"基本信息"
column=
{
3
}
/>
<
CustomizeColumn
id=
"detail"
data=
{
basicInfo
List
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
<
Card
title=
"考评项目"
id=
"project"
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Table
columns=
{
projectColumns
}
></
Table
>
<
Table
columns=
{
projectColumns
}
dataSource=
{
initialValue
?.
items
}
></
Table
>
</
Card
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
{
/* <CustomizeColumn id="result" columns={resultList} dataSource={{}} title="考评结果" /> */
}
<
CustomizeColumn
id=
"result"
data=
{
evaluateResultColumn
}
title=
"考评结果"
/>
</
div
>
<
div
id=
"record"
>
<
FlowRecords
innerRowkey=
"id"
innerColumns=
{
recordColumn
as
any
}
innerDataSource=
{
initialValue
?.
history
}
/>
</
div
>
<
Card
title=
"流转记录"
id=
"record"
extra=
{
<
Button
>
内部流转
</
Button
>
}
>
<
Table
columns=
{
recordColumn
}
></
Table
>
</
Card
>
</
AnchorPage
>
</
Spin
>
)
...
...
src/pages/member/memberEvaluate/allQuery/index.tsx
View file @
478d92e5
...
...
@@ -2,7 +2,7 @@ import React, { useRef } from 'react';
import
{
Card
,
Space
,
Button
}
from
'antd'
import
{
StandardTable
}
from
'god'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
useEvaluateColumn
from
'../hooks/useEvaluateColumn'
;
import
useEvaluateColumn
,
{
setColumnsByLinks
}
from
'../hooks/useEvaluateColumn'
;
import
{
evaluationListSchema
}
from
'../schema'
;
import
useFetchList
from
'../hooks/useFetchList'
;
import
{
createFormActions
}
from
'@formily/antd'
;
...
...
@@ -12,29 +12,23 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import
{
PublicApi
}
from
'@/services/api'
;
import
CustomizeQueryList
from
'../../components/CustomizeQueryList'
;
import
{
Link
}
from
'react-router-dom'
;
import
{
GetMemberAppraisalWaitPublishPageRequest
,
GetMemberAppraisalWaitPublishPageResponse
,
GetMemberAppraisalWaitPublishPageResponseDetail
}
from
'@/services/MemberV2Api/id9028
'
;
// import { GetMemberAppraisalWaitPublishPageRequest, GetMemberAppraisalWaitPublishPageResponse, GetMemberAppraisalWaitPublishPageResponseDetail } from '@/services/MemberV2Api
';
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
GetMemberAppraisalSummaryPageResponseDetail
,
GetMemberAppraisalSummaryPageRequest
,
GetMemberAppraisalSummaryPageResponse
}
from
'@/services/MemberV2Api'
;
// const formActions = createFormActions();
const
defaultColumns
=
setColumnsByLinks
({
detail
:
'/memberCenter/memberAbility/memberEvaluate/detail'
});
interface
Iprops
{};
const
List
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
fetchListData
}
=
useFetchList
();
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitPublishPageResponseDetail
>
([
// {
// title: '操作',
// render: (_text, _record) => (
// <Space>
// <a>删除</a>
// </Space>
// )
// }
])
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalSummaryPageResponseDetail
>
(
defaultColumns
,
[])
const
controllerBtns
=
(
<
div
>
<
Link
to=
{
"/memberCenter/memberAbility/memberEvaluate/
evaluate/
createEvaluate/add"
}
>
<
Link
to=
{
"/memberCenter/memberAbility/memberEvaluate/createEvaluate/add"
}
>
<
Button
type=
"primary"
>
<
PlusOutlined
/>
新建
</
Button
>
...
...
@@ -42,8 +36,8 @@ const List: React.FC<Iprops> = (props: Iprops) => {
</
div
>
)
const
handleFetch
=
async
(
params
:
Partial
<
GetMemberAppraisal
WaitPublish
PageRequest
>
)
=>
{
const
result
=
fetchListData
<
Partial
<
GetMemberAppraisal
WaitPublishPageRequest
>
,
GetMemberAppraisalWaitPublishPageResponse
>
(
PublicApi
.
getMemberAppraisalWaitPublish
Page
,
params
);
const
handleFetch
=
async
(
params
:
Partial
<
GetMemberAppraisal
Summary
PageRequest
>
)
=>
{
const
result
=
fetchListData
<
Partial
<
GetMemberAppraisal
SummaryPageRequest
>
,
GetMemberAppraisalSummaryPageResponse
>
(
PublicApi
.
getMemberAppraisalSummary
Page
,
params
);
return
result
}
...
...
src/pages/member/memberEvaluate/columns/detail.tsx
View file @
478d92e5
import
{
ColumnsType
}
from
'antd/es/table'
;
import
React
from
'react'
;
/**
* 详情页考评项目
...
...
@@ -11,39 +12,71 @@ export const projectColumns: ColumnsType<any> = [
},
{
title
:
'考评项目'
,
dataIndex
:
"
projectN
ame"
dataIndex
:
"
n
ame"
},
{
title
:
'
状态
'
,
dataIndex
:
"
status
"
title
:
'
内容
'
,
dataIndex
:
"
content
"
},
{
title
:
'考评人'
,
dataIndex
:
'
member
'
dataIndex
:
'
userName
'
},
{
title
:
'考评人打分'
,
dataIndex
:
'memberScoring'
dataIndex
:
'sendAppraisal'
,
render
:
(
text
,
record
)
=>
{
return
record
.
sendAppraisal
?
'是'
:
'否'
}
},
{
title
:
'权重'
,
dataIndex
:
'
w
eight'
dataIndex
:
'
scoreW
eight'
},
{
title
:
'考评计分'
,
dataIndex
:
'
scoring
'
dataIndex
:
'
grade
'
},
{
title
:
'得分'
,
dataIndex
:
'score'
dataIndex
:
'score'
,
render
:
(
text
,
record
)
=>
{
return
record
.
grade
*
record
.
scoreWeight
/
100
},
},
{
title
:
'考评模板'
,
dataIndex
:
'template'
,
dataIndex
:
'templates'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
"column"
}
}
>
{
record
.
templates
.
map
((
_row
)
=>
{
return
(
<
a
key=
{
_row
.
url
}
href=
{
_row
.
url
}
>
{
_row
.
name
}
</
a
>
)
})
}
</
div
>
)
}
},
{
title
:
'考评报告'
,
dataIndex
:
'report'
dataIndex
:
'appraisalReport'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
"column"
}
}
>
{
record
.
appraisalReport
.
map
((
_row
)
=>
{
return
(
<
a
key=
{
_row
.
url
}
href=
{
_row
.
url
}
>
{
_row
.
name
}
</
a
>
)
})
}
</
div
>
)
}
}
]
...
...
@@ -54,31 +87,31 @@ export const recordColumn: ColumnsType<any> = [
dataIndex
:
'id'
},
{
title
:
'操作
角色
'
,
dataIndex
:
'
rol
e'
,
title
:
'操作
人
'
,
dataIndex
:
'
operatorNam
e'
,
},
{
title
:
"部门"
,
dataIndex
:
'
apartment
'
,
dataIndex
:
'
operatorOrgName
'
,
},
{
title
:
"职位"
,
dataIndex
:
"
pos
"
dataIndex
:
"
operatorJobTitle
"
},
{
title
:
'状态'
,
dataIndex
:
'status'
dataIndex
:
'status
Name
'
},
{
title
:
"操作"
,
dataIndex
:
'
ac
tion'
dataIndex
:
'
opera
tion'
},
{
title
:
"操作时间"
,
dataIndex
:
'
action
Time'
dataIndex
:
'
create
Time'
},
{
title
:
"审核意见"
,
dataIndex
:
'
suggest
'
dataIndex
:
'
remark
'
},
]
src/pages/member/memberEvaluate/components/EvaluateProject/index.tsx
View file @
478d92e5
...
...
@@ -27,11 +27,11 @@ const EvaluateProject: React.FC<Iprops> & { isFieldComponent: boolean } = (props
const
columns
=
useMemo
(()
=>
[
{
title
:
'评估项目'
,
dataIndex
:
'
subMemberId
'
dataIndex
:
'
name
'
},
{
title
:
'评估内容'
,
dataIndex
:
'
name
'
dataIndex
:
'
typeDesc
'
},
],
[])
...
...
@@ -66,7 +66,7 @@ const EvaluateProject: React.FC<Iprops> & { isFieldComponent: boolean } = (props
* 业务组件,未看到复用情况,暂时写死
*/
const
handleFetchData
=
useCallback
(
async
(
params
:
any
):
Promise
<
any
>
=>
{
const
{
data
,
code
}
=
await
PublicApi
.
getMember
InspectMembers
(
params
);
const
{
data
,
code
}
=
await
PublicApi
.
getMember
AppraisalItemConfigPage
(
params
);
if
(
code
===
1000
)
{
return
data
;
}
...
...
@@ -84,7 +84,7 @@ const EvaluateProject: React.FC<Iprops> & { isFieldComponent: boolean } = (props
onOk=
{
handleOnOk
}
fetchData=
{
handleFetchData
}
tableProps=
{
{
rowKey
:
(
record
)
=>
`${record.
subMemberId}_${record.subRoleId
}`
,
rowKey
:
(
record
)
=>
`${record.
type
}`
,
}
}
mode=
{
"checkbox"
}
value=
{
value
}
...
...
src/pages/member/memberEvaluate/components/FormilySelectMember/index.tsx
View file @
478d92e5
...
...
@@ -15,7 +15,10 @@ import styles from './index.less'
const
formActions
=
createFormActions
();
interface
Iprops
{
value
:
boolean
,
value
:
{
userId
:
number
,
name
:
string
,
},
editable
:
boolean
,
schema
:
any
,
props
:
{
...
...
@@ -44,7 +47,7 @@ const FormilySelectMember: React.FC<Iprops> & { isFieldComponent: boolean } = (p
const
columns
:
ColumnsType
=
[
{
title
:
'序号'
,
dataIndex
:
'
i
d'
dataIndex
:
'
userI
d'
},
{
title
:
'姓名'
,
...
...
@@ -52,37 +55,20 @@ const FormilySelectMember: React.FC<Iprops> & { isFieldComponent: boolean } = (p
},
{
title
:
'手机号码'
,
dataIndex
:
'
tele
phone'
,
dataIndex
:
'phone'
,
},
{
title
:
'所属机构'
,
dataIndex
:
'org'
dataIndex
:
'org
Name
'
},
{
title
:
'职位'
,
dataIndex
:
'
pos
'
dataIndex
:
'
jobTitle
'
}
];
const
fetchListData
=
async
(
params
:
any
)
=>
{
if
(
fetchData
)
{
return
await
fetchData
(
params
);
}
return
new
Promise
((
resolve
)
=>
{
setTimeout
(()
=>
{
resolve
({
totalCount
:
0
,
data
:
[{
id
:
1
,
name
:
'123'
},
{
id
:
2
,
name
:
'456'
}]
})
},
1000
)
})
return
await
fetchData
(
params
);
}
const
onSelectChange
=
(
record
,
selected
:
Boolean
,
selectedRows
)
=>
{
...
...
@@ -120,7 +106,7 @@ const FormilySelectMember: React.FC<Iprops> & { isFieldComponent: boolean } = (p
>
<
StandardTable
tableProps=
{
{
rowKey
:
'
i
d'
,
rowKey
:
'
userI
d'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
...
...
@@ -128,7 +114,7 @@ const FormilySelectMember: React.FC<Iprops> & { isFieldComponent: boolean } = (p
rowSelection=
{
{
type
:
'radio'
,
onSelect
:
onSelectChange
,
selectedRowKeys
:
value
?
[
value
?.
i
d
]
:
[],
selectedRowKeys
:
value
?
[
value
?.
userI
d
]
:
[],
}
}
controlRender=
{
<
NiceForm
...
...
src/pages/member/memberEvaluate/components/FormilySelectMember/schema.tsx
View file @
478d92e5
...
...
@@ -24,13 +24,20 @@ const memberSchema: ISchema = {
grid
:
true
,
full
:
true
,
autoRow
:
true
,
columns
:
6
,
columns
:
3
,
},
properties
:
{
summary
:
{
orgName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'通知单摘要'
,
placeholder
:
'所属机构'
,
allowClear
:
true
,
},
},
jobTitle
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'职位'
,
allowClear
:
true
,
},
},
...
...
src/pages/member/memberEvaluate/createEvaluate/add.tsx
View file @
478d92e5
This diff is collapsed.
Click to expand it.
src/pages/member/memberEvaluate/createEvaluate/index.tsx
View file @
478d92e5
import
React
,
{
useRef
}
from
'react'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
Card
,
Space
,
Button
,
Spin
}
from
'antd'
import
{
StandardTable
}
from
'god'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
useEvaluateColumn
from
'../hooks/useEvaluateColumn'
;
import
useEvaluateColumn
,
{
setColumnsByLinks
}
from
'../hooks/useEvaluateColumn'
;
import
{
evaluationListSchema
}
from
'../schema'
;
import
useFetchList
from
'../hooks/useFetchList'
;
import
{
createFormActions
}
from
'@formily/antd'
;
...
...
@@ -14,17 +14,38 @@ import CustomizeQueryList from '../../components/CustomizeQueryList';
import
{
Link
}
from
'react-router-dom'
;
import
{
GetMemberAppraisalWaitPublishPageRequest
,
GetMemberAppraisalWaitPublishPageResponse
,
GetMemberAppraisalWaitPublishPageResponseDetail
}
from
'@/services/MemberV2Api/id9028'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
const
defaultColumns
=
setColumnsByLinks
();
interface
Iprops
{};
const
List
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
ref
=
useRef
<
any
>
({})
const
[
rowSelection
,
rowController
]
=
useRowSelectionTable
();
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
{
fetchListData
}
=
useFetchList
();
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitPublishPageResponseDetail
>
([
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitPublishPageResponseDetail
>
(
defaultColumns
,
[
{
title
:
'操作'
,
render
:
(
_text
,
_record
)
=>
(
<
Space
>
<
a
>
删除
</
a
>
{
_record
.
publish
&&
(
<
Spin
spinning=
{
submitLoading
}
>
<
a
onClick=
{
()
=>
handlePublic
([
_record
.
id
])
}
>
发布
</
a
>
</
Spin
>
)
}
{
_record
.
updateOrDel
&&
(
<>
<
Link
to=
{
`/memberCenter/memberAbility/memberEvaluate/createEvaluate/edit?id=${_record.id}`
}
>
修改
</
Link
>
<
Spin
spinning=
{
submitLoading
}
>
<
a
onClick=
{
()
=>
handleBatchRemove
([
_record
.
id
])
}
>
删除
</
a
>
</
Spin
>
</>
)
}
</
Space
>
)
}
...
...
@@ -32,13 +53,11 @@ const List: React.FC<Iprops> = (props: Iprops) => {
const
controllerBtns
=
(
<
Space
>
<
Link
to=
{
"/memberCenter/memberAbility/memberEvaluate/evaluate/createEvaluate/add"
}
>
<
Button
type=
"primary"
>
<
PlusOutlined
/>
新建
</
Button
>
<
Link
to=
{
"/memberCenter/memberAbility/memberEvaluate/createEvaluate/add"
}
>
<
Button
type=
"primary"
icon=
{
<
PlusOutlined
/>
}
>
新建
</
Button
>
</
Link
>
<
Button
type=
"ghost"
>
批量删除
</
Button
>
<
Button
>
批量发布
</
Button
>
<
Button
loading=
{
submitLoading
}
onClick=
{
()
=>
handleBatchRemove
(
rowController
.
selectedRowKeys
)
}
type=
"ghost"
>
批量删除
</
Button
>
<
Button
loading=
{
submitLoading
}
onClick=
{
()
=>
handlePublic
(
rowController
.
selectedRowKeys
)
}
>
批量发布
</
Button
>
</
Space
>
)
...
...
@@ -47,11 +66,32 @@ const List: React.FC<Iprops> = (props: Iprops) => {
return
result
}
const
handlePublic
=
async
(
ids
:
number
[])
=>
{
setSubmitLoading
(
true
)
const
{
code
,
data
}
=
await
PublicApi
.
postMemberAppraisalWaitPublishPublish
({
ids
:
ids
});
setSubmitLoading
(
false
)
if
(
code
===
1000
)
{
ref
.
current
?.
submit
();
}
}
const
handleBatchRemove
=
async
(
ids
:
number
[])
=>
{
setSubmitLoading
(
true
)
const
{
code
,
data
}
=
await
PublicApi
.
postMemberAppraisalDelete
({
ids
:
ids
});
setSubmitLoading
(
false
)
if
(
code
===
1000
)
{
ref
.
current
?.
submit
();
}
}
return
(
<
Card
>
<
CustomizeQueryList
columns=
{
columns
}
ref=
{
ref
}
schema=
{
evaluationListSchema
}
rowSelection=
{
rowSelection
as
any
}
fetchListData=
{
handleFetch
}
expressionScope=
{
{
controllerBtns
,
...
...
src/pages/member/memberEvaluate/hooks/useEvaluateColumn.tsx
View file @
478d92e5
...
...
@@ -17,55 +17,69 @@ const TYPE = ['success', 'warning', 'default', 'danger', 'primary', 'nobility']
* 根据类型获取考评column
*/
function
useEvaluateColumn
<
T
extends
{
[
key
:
string
]:
any
}
=
any
>
(
mergeColumn
?:
ColumnsType
<
T
>
)
{
const
defaultColumns
:
ColumnsType
<
T
>
=
[
const
commonColumns
=
[
{
title
:
'会员名称'
,
dataIndex
:
'name'
,
},
{
title
:
'考评范围'
,
dataIndex
:
'type'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
{
`${record.appraisalDayStart} 至 ${record.appraisalDayEnd}`
}
</
div
>
)
}
// filters: [],
// onFilter: (_value, record) => record.type === _value,
},
{
title
:
'考评完成时间'
,
dataIndex
:
'completeDay'
,
sorter
:
(
_a
,
_b
)
=>
_a
.
date
-
_b
.
date
,
},
{
title
:
'内部状态'
,
dataIndex
:
'status'
,
filters
:
[],
onFilter
:
(
_value
,
record
)
=>
record
.
type
===
_value
,
render
:
(
text
,
record
)
=>
{
const
offset
=
record
.
status
%
(
TYPE
.
length
)
return
(
<
StatusTag
type=
{
TYPE
[
offset
]
as
"success"
}
title=
{
record
.
statusName
}
/>
)
}
},
]
export
const
setColumnsByLinks
=
(
link
?:
{
[
key
:
string
]:
string
})
=>
{
const
linksColumns
:
ColumnsType
<
any
>
=
[
{
title
:
'考评单号/主题'
,
dataIndex
:
'
name
'
,
dataIndex
:
'
des
'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
<
Link
to=
{
`/memberCenter/memberAbility/memberEvaluate/allQuery/detail?id=${record.id}`
}
>
{
record
.
id
}
</
Link
>
<
div
style=
{
{
display
:
'flex'
,
flexDirection
:
'column'
,
}
}
>
{
link
?.[
'detail'
]
&&
(
<
Link
to=
{
`${link?.['detail']}?id=${record.id}`
}
>
{
record
.
id
}
</
Link
>
)
||
(
<
span
>
{
record
.
id
}
</
span
>
)
}
<
p
>
{
record
.
subject
}
</
p
>
</
div
>
)
}
},
{
title
:
'会员名称'
,
dataIndex
:
'name'
,
},
{
title
:
'考评范围'
,
dataIndex
:
'type'
,
render
:
(
text
,
record
)
=>
{
return
(
<
div
>
{
`${record.appraisalTimeStart} 至 ${record.appraisalTimeEnd}`
}
</
div
>
)
}
// filters: [],
// onFilter: (_value, record) => record.type === _value,
},
{
title
:
'考评完成时间'
,
dataIndex
:
'completeTime'
,
sorter
:
(
_a
,
_b
)
=>
_a
.
date
-
_b
.
date
,
},
{
title
:
'内部状态'
,
dataIndex
:
'status'
,
filters
:
[],
onFilter
:
(
_value
,
record
)
=>
record
.
type
===
_value
,
render
:
(
text
,
record
)
=>
{
const
offset
=
record
.
status
%
(
TYPE
.
length
)
return
(
<
StatusTag
type=
{
TYPE
[
offset
]
as
"success"
}
title=
{
record
.
status
}
/>
)
}
},
];
]
return
linksColumns
.
concat
(
commonColumns
);
}
function
useEvaluateColumn
<
T
extends
{
[
key
:
string
]:
any
}
=
any
>
(
defaultColumns
:
ColumnsType
<
T
>
,
mergeColumn
?:
ColumnsType
<
T
>
)
{
const
[
columns
,
setColumns
]
=
useState
(()
=>
defaultColumns
.
concat
(
mergeColumn
));
const
[
statusOptions
,
setStatusOptions
]
=
useState
<
OptionType
[]
>
([]);
...
...
src/pages/member/memberEvaluate/hooks/useGetDetailCommon.tsx
View file @
478d92e5
import
React
,
{
useMemo
,
useState
}
from
'react'
;
import
{
Progress
}
from
'antd'
;
import
{
initial
}
from
'lodash'
;
/**
* 获取考评详情页的公共部分
...
...
@@ -40,37 +41,40 @@ function useGetDetailCommon(options: Options) {
const
basicInfoList
=
useMemo
(()
=>
{
return
[
{
title
:
'考
聘工
单号'
,
value
:
'theme'
,
title
:
'考
评
单号'
,
value
:
initialValue
?.
id
,
},
{
title
:
'会员名称'
,
value
:
'memberName'
,
value
:
initialValue
?.
name
,
},
{
title
:
'附件'
,
value
:
(
<
div
>
{
initialValue
?.
files
?.
map
((
_row
)
=>
_row
.
name
)
}
</
div
>
{
initialValue
?.
attachments
?.
map
((
_row
)
=>
{
return
(
<
a
key=
{
_row
.
url
}
href=
{
_row
.
url
}
>
{
_row
.
name
}
</
a
>
)
})
}
</
div
>
)
},
{
title
:
'考评主题'
,
value
:
(
<
div
>
123
</
div
>
)
value
:
initialValue
?.
subject
,
},
{
title
:
'考察范围'
,
value
:
'date'
},
{
title
:
''
,
value
:
''
,
span
:
2
,
value
:
(
<
div
>
{
`${initialValue?.appraisalDayStart} 至 ${initialValue?.appraisalDayEnd} `
}
</
div
>
)
},
{
title
:
"内部状态"
,
...
...
@@ -80,7 +84,7 @@ function useGetDetailCommon(options: Options) {
},
{
title
:
"考评完成时间"
,
value
:
'reason'
value
:
initialValue
?.
completeDay
},
]
},
[
initialValue
]);
...
...
@@ -91,18 +95,26 @@ function useGetDetailCommon(options: Options) {
title
:
'考评最终分'
,
value
:
(
<
div
style=
{
{
width
:
'60px'
,
height
:
'30px'
}
}
>
<
Progress
type=
"dashboard"
percent=
{
75
}
gapDegree=
{
145
}
width=
{
60
}
/>
<
Progress
type=
"dashboard"
percent=
{
initialValue
?.
totalScore
}
gapDegree=
{
145
}
width=
{
60
}
/>
</
div
>
)
},
{
title
:
'考察结果'
,
value
:
'b级,需要整改'
,
value
:
initialValue
?.
result
},
{
title
:
'附件'
,
value
:
(
<
div
>
123
</
div
>
<
div
>
{
initialValue
?.
resultAttachments
?.
map
((
_row
)
=>
{
return
(
<
a
key=
{
_row
.
url
}
href=
{
_row
.
url
}
>
{
_row
.
name
}
</
a
>
)
})
}
</
div
>
)
},
{
...
...
@@ -111,10 +123,10 @@ function useGetDetailCommon(options: Options) {
},
{
title
:
'通知考评结果'
,
value
:
'是
'
value
:
initialValue
?.
notifyMember
?
'是'
:
'否
'
}
]
},
[])
},
[
initialValue
])
return
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
}
...
...
src/pages/member/memberEvaluate/schema/add.tsx
View file @
478d92e5
...
...
@@ -112,7 +112,7 @@ export const evaluateAddSchema: ISchema = {
// children: '{{selectProject}}',
},
},
"
array
"
:
{
"
items
"
:
{
"type"
:
"array"
,
"x-component"
:
"arraytable"
,
"x-component-props"
:
{
...
...
@@ -137,7 +137,7 @@ export const evaluateAddSchema: ISchema = {
"x-component-props"
:
{
}
},
projectN
ame
:
{
n
ame
:
{
title
:
'考评项目'
,
type
:
'string'
,
"x-component-props"
:
{},
...
...
@@ -145,7 +145,7 @@ export const evaluateAddSchema: ISchema = {
width
:
160
,
}
},
projectC
ontent
:
{
c
ontent
:
{
title
:
'考评内容'
,
type
:
'textarea'
,
'x-props'
:
{
...
...
@@ -165,11 +165,12 @@ export const evaluateAddSchema: ISchema = {
width
:
128
,
},
"x-component"
:
"FormilySelectMember"
,
// "x-component-props": {
// children: '选择考评人'
// }
"x-component-props"
:
{
// children: '选择考评人'
fetchData
:
'{{fetchUserData}}'
}
},
memberScore
:
{
sendAppraisal
:
{
title
:
"考评人打分"
,
type
:
'string'
,
'x-component'
:
'FormilyCheckbox'
,
...
...
@@ -178,14 +179,14 @@ export const evaluateAddSchema: ISchema = {
}
},
w
eight
:
{
scoreW
eight
:
{
title
:
'考评权重'
,
type
:
'string'
,
"x-props"
:
{
width
:
95
,
},
},
score1
:
{
grade
:
{
title
:
'考评计分'
,
type
:
'string'
,
"x-props"
:
{
...
...
@@ -194,14 +195,16 @@ export const evaluateAddSchema: ISchema = {
"x-component-props"
:
{}
},
score
:
{
title
:
'
考评内容
'
,
title
:
'
得分
'
,
"x-props"
:
{
width
:
95
,
},
editable
:
false
,
"x-component-props"
:
{},
type
:
'string'
},
moban
:
{
templates
:
{
title
:
'考评模板'
,
type
:
"object"
,
'x-component'
:
'FormilyUploadFiles'
,
...
...
@@ -214,7 +217,7 @@ export const evaluateAddSchema: ISchema = {
width
:
180
,
}
},
baogao
:
{
reports
:
{
title
:
'考评报告'
,
type
:
"object"
,
'x-component'
:
'FormilyUploadFiles'
,
...
...
src/pages/member/memberEvaluate/tobeEvaluate/detail.tsx
View file @
478d92e5
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
React
,
{
useEffect
,
use
Memo
,
use
State
}
from
'react'
;
import
{
Spin
,
Card
,
Table
,
Button
,
Drawer
}
from
'antd'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
import
CustomizeColumn
from
'@/components/CustomizeColumn'
;
...
...
@@ -12,82 +12,111 @@ import { SchemaForm, createFormActions} from '@formily/antd'
import
{
scoringSchema
}
from
'./schema'
;
import
useModal
from
'../hooks/useModal'
;
import
styles
from
'./detail.less'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
useInitialValue
from
'@/pages/handling/common/hooks/useInitialValue'
;
import
{
GetMemberAppraisalSummaryGetResponse
}
from
'@/services/MemberV2Api'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
type
SubmitDataType
=
{
items
:
{
scoring
:
string
,
id
:
number
,
reports
:
{
name
:
string
,
url
:
string
}[],
[
key
:
string
]:
any
}
}
const
formActions
=
createFormActions
();
const
TobeEvaluateDetail
=
()
=>
{
const
{
visible
,
toggle
}
=
useModal
()
const
[
initialValue
,
setInitialValue
]
=
useState
({});
const
{
anchorHeader
,
basicInfoList
}
=
useGetDetailCommon
({
blackList
:
[
'project'
,
'result'
],
initialValue
:
initialValue
})
const
{
id
}
=
usePageStatus
();
const
params
=
useMemo
(()
=>
{
return
id
?
{
id
:
id
.
toString
()
}
:
null
},
[
id
]);
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetMemberAppraisalSummaryGetResponse
,
{
id
:
string
}
>
(
PublicApi
.
getMemberAppraisalSummaryGet
,
params
)
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[
'result'
],
initialValue
:
initialValue
})
const
[
hasScoring
,
setHasScoring
]
=
useState
<
boolean
>
(
false
);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
/**
* @todo 抽出来
*/
useEffect
(()
=>
{
async
function
init
()
{
return
new
Promise
<
void
>
((
resolve
)
=>
{
setTimeout
(()
=>
{
setInitialValue
({
theme
:
'hellow'
,
files
:
[
{
name
:
'百度12312'
,
url
:
"http://www.baidu.com"
}
],
scoringList
:
[
{
id
:
1
,
projectName
:
"123"
,
memberName
:
{
"id"
:
2
,
"name"
:
"456"
},
baogao
:
[
{
name
:
'123'
,
url
:
'http://www.baidu.com/zzz.png'
,
}
]
}
]
})
resolve
()
},
1500
)
})
const
scoringItems
=
useMemo
(()
=>
{
if
(
!
initialValue
)
{
return
{}
}
init
();
},
[])
const
items
=
initialValue
?.
items
;
return
{
items
:
items
}
},
[
initialValue
])
const
onDrawerConfirm
=
()
=>
{
// handleConfirm()
formActions
.
submit
();
}
const
onSubmit
=
(
value
:
any
)
=>
{
console
.
log
(
value
);
// handleConfirm();
toggle
(
false
);
const
onSubmit
=
async
(
value
:
SubmitDataType
)
=>
{
const
itemList
=
value
.
items
.
map
((
_row
)
=>
{
return
{
id
:
_row
.
id
,
grade
:
_row
.
scoring
,
reports
:
_row
.
reports
?.
map
((
_record
)
=>
({
url
:
_record
.
url
,
name
:
_record
.
name
}))
||
[]
}
})
const
postData
=
{
id
:
id
,
items
:
itemList
,
}
setSubmitLoading
(
true
)
const
{
code
,
data
}
=
await
PublicApi
.
postMemberAppraisalWaitGradeGrade
(
postData
);
setSubmitLoading
(
false
)
if
(
code
===
1000
)
{
setHasScoring
(
true
);
toggle
(
false
);
}
}
return
(
<
Spin
spinning=
{
false
}
>
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
`温州市隆昌皮业有限公式`
}
title=
{
initialValue
?.
name
}
anchors=
{
anchorHeader
}
extra=
{
<
Button
onClick=
{
()
=>
toggle
(
true
)
}
>
考评打分
</
Button
>
(
!
hasScoring
&&
(
<
Button
type=
"primary"
onClick=
{
()
=>
toggle
(
true
)
}
>
考评打分
</
Button
>
)
)
}
>
<
AuditProcess
title=
"流转进度"
id=
"progress"
/>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"detail"
data=
{
basicInfoList
}
title=
"基本信息"
column=
{
3
}
/>
<
AuditProcess
innerVerifySteps=
{
initialValue
&&
initialValue
.
verifySteps
?
initialValue
.
verifySteps
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
stepName
,
roleName
:
item
.
roleName
,
status
:
initialValue
?.
currentStep
>=
item
.
step
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
verifySteps
)
}
id=
"progress"
/>
<
div
id=
"detail"
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
data=
{
basicInfoList
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
<
div
id=
"record"
>
<
FlowRecords
innerRowkey=
"id"
innerColumns=
{
recordColumn
as
any
}
innerDataSource=
{
initialValue
?.
history
}
/>
</
div
>
<
Card
title=
"流转记录"
id=
"record"
extra=
{
<
Button
>
内部流转
</
Button
>
}
>
<
Table
columns=
{
recordColumn
}
></
Table
>
</
Card
>
</
AnchorPage
>
<
Drawer
title=
"考评打分"
...
...
@@ -99,7 +128,7 @@ const TobeEvaluateDetail = () => {
<
Button
onClick=
{
()
=>
toggle
(
false
)
}
style=
{
{
marginRight
:
8
}
}
>
取消
</
Button
>
<
Button
onClick=
{
onDrawerConfirm
}
type=
"primary"
>
<
Button
loading=
{
submitLoading
}
onClick=
{
onDrawerConfirm
}
type=
"primary"
>
确认
</
Button
>
</
div
>
...
...
@@ -108,7 +137,7 @@ const TobeEvaluateDetail = () => {
<
div
className=
{
styles
.
form
}
>
<
SchemaForm
onSubmit=
{
onSubmit
}
initialValues=
{
initialValue
}
initialValues=
{
scoringItems
}
schema=
{
scoringSchema
}
actions=
{
formActions
}
components=
{
{
...
...
src/pages/member/memberEvaluate/tobeEvaluate/index.tsx
View file @
478d92e5
import
React
from
'react'
;
import
{
Card
,
Space
}
from
'antd'
import
useEvaluateColumn
,
{
InspectionData
}
from
'../hooks/useEvaluateColumn'
;
import
useEvaluateColumn
,
{
setColumnsByLinks
}
from
'../hooks/useEvaluateColumn'
;
import
{
querySchema
}
from
'./schema'
;
import
useFetchList
from
'../hooks/useFetchList'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
CustomizeQueryList
from
'../../components/CustomizeQueryList'
;
import
{
GetMemberAppraisalWaitGradePageResponseDetail
}
from
'@/services/MemberV2Api'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
Link
}
from
'umi'
;
interface
Iprops
{};
const
defaultColumns
=
setColumnsByLinks
(
{
detail
:
'/memberCenter/memberAbility/memberEvaluate/tobeEvaluate/detail'
}
);
const
List
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
fetchListData
}
=
useFetchList
();
const
{
columns
}
=
useEvaluateColumn
<
InspectionData
>
([
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitGradePageResponseDetail
>
(
defaultColumns
,
[
{
title
:
'操作'
,
render
:
(
_text
,
_record
)
=>
(
<
Space
>
<
a
>
考评打分
</
a
>
<
Link
to=
{
`/memberCenter/memberAbility/memberEvaluate/tobeEvaluate/detail?id=${_record.id}`
}
>
考评打分
</
Link
>
</
Space
>
)
}
])
const
handleFetch
=
async
(
params
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberA
bilitySub
Page
,
params
);
const
result
=
fetchListData
(
PublicApi
.
getMemberA
ppraisalWaitGrade
Page
,
params
);
return
result
}
...
...
@@ -35,12 +45,8 @@ const List: React.FC<Iprops> = (props: Iprops) => {
schema=
{
querySchema
}
fetchListData=
{
handleFetch
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
,
);
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
);
useAsyncSelect
(
'status'
,
fetchStatusOptions
);
}
}
/>
</
Card
>
...
...
src/pages/member/memberEvaluate/tobeEvaluate/schema.tsx
View file @
478d92e5
...
...
@@ -15,9 +15,9 @@ import { FORM_FILTER_PATH } from '@/formSchema/const';
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索
通知单号
'
,
placeholder
:
'搜索
会员名称
'
,
align
:
'flex-left'
,
tip
:
'输入
通知单号
进行搜索'
,
tip
:
'输入
会员名称
进行搜索'
,
},
},
[
FORM_FILTER_PATH
]:
{
...
...
@@ -27,39 +27,27 @@ import { FORM_FILTER_PATH } from '@/formSchema/const';
grid
:
true
,
full
:
true
,
autoRow
:
true
,
columns
:
6
,
columns
:
3
,
},
properties
:
{
su
mmary
:
{
su
bject
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'
通知单摘要
'
,
placeholder
:
'
考评主题
'
,
allowClear
:
true
,
style
:
{
width
:
160
,
},
},
},
processName
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'加工企业名'
,
allowClear
:
true
,
},
},
outerStatus
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'外部状态(全部)'
,
allowClear
:
true
,
},
},
innerStatus
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'[appraisalDayStart,appraisalDayEnd]'
:
{
type
:
'daterange'
,
'x-component-props'
:
{
placeholder
:
'内部状态(全部)'
,
placeholder
:
[
'考评开始时间'
,
'考评完成时间'
]
,
allowClear
:
true
,
style
:
{
width
:
240
,
},
},
},
submit
:
{
...
...
@@ -81,7 +69,7 @@ import { FORM_FILTER_PATH } from '@/formSchema/const';
export
const
scoringSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
scoringList
:
{
items
:
{
"type"
:
"array"
,
"x-component"
:
"arraytable"
,
"x-component-props"
:
{
...
...
@@ -104,17 +92,19 @@ export const scoringSchema: ISchema = {
},
},
projectN
ame
:
{
n
ame
:
{
title
:
'考评项目'
,
type
:
'string'
,
"x-component-props"
:
{},
editable
:
false
,
"x-props"
:
{
width
:
160
,
}
},
projectC
ontent
:
{
c
ontent
:
{
title
:
'考评内容'
,
type
:
'textarea'
,
editable
:
false
,
'x-props'
:
{
width
:
424
,
},
...
...
@@ -125,7 +115,7 @@ export const scoringSchema: ISchema = {
}
}
},
'
memberName.n
ame'
:
{
'
userN
ame'
:
{
title
:
"考评人"
,
type
:
'string'
,
editable
:
false
,
...
...
@@ -137,7 +127,7 @@ export const scoringSchema: ISchema = {
// children: '选择考评人'
// }
},
moban
:
{
templates
:
{
title
:
'考评模板'
,
type
:
"object"
,
'x-component'
:
'FormilyUploadFiles'
,
...
...
@@ -146,11 +136,12 @@ export const scoringSchema: ISchema = {
buttonText
:
'上传'
,
fileContainerClassName
:
'customizeFileContainer'
},
editable
:
false
,
"x-props"
:
{
width
:
180
,
}
},
baogao
:
{
reports
:
{
title
:
'考评报告'
,
type
:
"object"
,
'x-component'
:
'FormilyUploadFiles'
,
...
...
@@ -163,12 +154,22 @@ export const scoringSchema: ISchema = {
width
:
180
,
}
},
scor
e1
:
{
scor
ing
:
{
title
:
'考评计分'
,
type
:
'string'
,
"x-props"
:
{
width
:
95
,
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请填写考评计分'
},
{
pattern
:
/^
(?!
0+
(?:\.
0+
)?
$
)(?:[
1-9
]\d
*|0
)(?:\.\d{1,2})?
$/
,
message
:
'请填写数字,可保留两位小数'
}
],
"x-component-props"
:
{}
},
}
...
...
src/pages/member/memberEvaluate/tobeInformed/detail.tsx
View file @
478d92e5
import
React
from
'react'
;
import
React
,
{
useMemo
,
useState
}
from
'react'
;
import
{
Spin
,
Card
,
Table
,
Button
}
from
'antd'
;
import
{
CheckCircleOutlined
}
from
'@ant-design/icons'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
...
...
@@ -11,38 +11,66 @@ import useFetchInfo from '../hooks/useFetchInfo';
import
useModal
from
'../hooks/useModal'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
ExamVerify
,
{
SubmitDataTypes
}
from
'@/components/ExamVerify'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
import
{
GetMemberAppraisalSummaryGetResponse
}
from
'@/services/MemberV2Api'
;
import
{
history
}
from
'umi'
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
const
TobeEvaluateDetail
=
()
=>
{
const
{
initialValue
}
=
useFetchInfo
(
PublicApi
.
getMemberAbilitySubGet
,
{
id
:
1
})
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[],
initialValue
:
initialValue
});
const
onSubmitRes
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
params
=
useMemo
(()
=>
{
return
id
?
{
id
:
id
.
toString
()
}
:
null
},
[
id
]);
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetMemberAppraisalSummaryGetResponse
,
{
id
:
string
}
>
(
PublicApi
.
getMemberAppraisalSummaryGet
,
params
)
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[],
initialValue
:
initialValue
})
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
)
const
onSubmitRes
=
async
()
=>
{
setSubmitLoading
(
true
)
const
{
code
,
data
}
=
await
PublicApi
.
postMemberAppraisalWaitNotificationNotification
({
ids
:
[
id
]});
setSubmitLoading
(
false
)
if
(
code
===
1000
)
{
history
.
goBack
();
}
}
return
(
<
Spin
spinning=
{
false
}
>
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
`温州市隆昌皮业有限公式`
}
title=
{
initialValue
?.
subject
}
anchors=
{
anchorHeader
}
extra=
{
<
Button
type=
"primary"
onClick=
{
onSubmitRes
}
>
提交考评结果
</
Button
>
<
Button
loading=
{
submitLoading
}
type=
"primary"
onClick=
{
onSubmitRes
}
icon=
{
<
CheckCircleOutlined
/>
}
>
单据审核
</
Button
>
}
>
<
AuditProcess
title=
"流转进度"
id=
"progress"
/>
<
AuditProcess
innerVerifySteps=
{
initialValue
&&
initialValue
.
verifySteps
?
initialValue
.
verifySteps
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
stepName
,
roleName
:
item
.
roleName
,
status
:
initialValue
?.
currentStep
>
item
.
step
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
verifySteps
)
}
id=
"progress"
/>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"detail"
data=
{
basicInfoList
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
<
Card
title=
"考评项目"
id=
"project"
>
<
Table
columns=
{
projectColumns
}
></
Table
>
<
Card
title=
"考评项目"
id=
"project"
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Table
columns=
{
projectColumns
}
dataSource=
{
initialValue
?.
items
}
></
Table
>
</
Card
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"result"
data=
{
evaluateResultColumn
}
title=
"
基本信息"
column=
{
3
}
/>
<
CustomizeColumn
id=
"result"
data=
{
evaluateResultColumn
}
title=
"
考评结果"
/>
</
div
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Card
title=
"流转记录"
id=
"record"
extra=
{
<
Button
>
内部流转
</
Button
>
}
>
<
Table
columns=
{
recordColumn
}
></
Table
>
</
Card
>
<
div
id=
"record"
>
<
FlowRecords
innerRowkey=
"id"
innerColumns=
{
recordColumn
as
any
}
innerDataSource=
{
initialValue
?.
history
}
/>
</
div
>
</
AnchorPage
>
</
Spin
>
...
...
src/pages/member/memberEvaluate/tobeInformed/index.tsx
View file @
478d92e5
import
React
from
'react'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
import
useEvaluateColumn
,
{
InspectionData
}
from
'../hooks/useEvaluateColumn'
;
import
useEvaluateColumn
,
{
setColumnsByLinks
}
from
'../hooks/useEvaluateColumn'
;
import
{
evaluationListSchema
}
from
'../schema'
;
import
useFetchList
from
'../hooks/useFetchList'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
CustomizeQueryList
from
'../../components/CustomizeQueryList'
;
import
{
GetMemberAppraisalWaitNotificationPageRequest
,
GetMemberAppraisalWaitNotificationPageResponseDetail
}
from
'@/services/MemberV2Api'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
{
Link
}
from
'umi'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
const
defaultColumns
=
setColumnsByLinks
({
detail
:
'/memberCenter/memberAbility/memberEvaluate/tobeInformed'
,
});
interface
Iprops
{};
const
List
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
ref
=
useRef
<
any
>
({})
const
{
fetchListData
}
=
useFetchList
();
const
{
columns
}
=
useEvaluateColumn
<
InspectionData
>
([
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
[
rowSelection
,
rowController
]
=
useRowSelectionTable
();
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitNotificationPageResponseDetail
>
(
defaultColumns
,[
{
title
:
'操作'
,
render
:
(
_text
,
_record
)
=>
(
<
Space
>
<
a
>
通报
</
a
>
<
Link
to=
{
`/memberCenter/memberAbility/memberEvaluate/tobeInformed/detail?id=${_record.id}`
}
>
通报
</
Link
>
</
Space
>
)
}
...
...
@@ -25,12 +36,24 @@ const List: React.FC<Iprops> = (props: Iprops) => {
const
controllerBtns
=
(
<
Space
>
<
Button
>
批量通报
</
Button
>
<
Button
loading=
{
submitLoading
}
onClick=
{
()
=>
handleBatchNotice
(
rowController
.
selectedRowKeys
)
}
>
批量通报
</
Button
>
</
Space
>
)
const
handleFetch
=
async
(
params
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAbilitySubPage
,
params
);
const
handleBatchNotice
=
async
(
ids
:
number
[])
=>
{
setSubmitLoading
(
true
)
const
{
code
,
data
}
=
await
PublicApi
.
postMemberAppraisalWaitNotificationNotification
({
ids
:
ids
});
setSubmitLoading
(
false
)
if
(
code
===
1000
)
{
ref
.
current
?.
submit
();
}
}
const
handleFetch
=
async
(
params
:
GetMemberAppraisalWaitNotificationPageRequest
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAppraisalWaitNotificationPage
,
params
);
return
result
}
...
...
@@ -38,11 +61,13 @@ const List: React.FC<Iprops> = (props: Iprops) => {
<
Card
>
<
CustomizeQueryList
columns=
{
columns
}
rowSelection=
{
rowSelection
as
any
}
schema=
{
evaluationListSchema
}
fetchListData=
{
handleFetch
}
expressionScope=
{
{
controllerBtns
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
);
useAsyncSelect
(
'status'
,
fetchStatusOptions
);
}
}
/>
</
Card
>
...
...
src/pages/member/memberEvaluate/tobeReviewI/detail.tsx
View file @
478d92e5
import
React
from
'react'
;
import
React
,
{
useMemo
}
from
'react'
;
import
{
Spin
,
Card
,
Table
,
Button
}
from
'antd'
;
import
{
CheckCircleOutlined
}
from
'@ant-design/icons'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
...
...
@@ -7,55 +7,81 @@ import AuditProcess from '@/components/AuditProcess';
import
{
PublicApi
}
from
'@/services/api'
;
import
{
projectColumns
,
recordColumn
}
from
'../columns/detail'
;
import
useGetDetailCommon
from
'../hooks/useGetDetailCommon'
;
import
useFetchInfo
from
'../hooks/useFetchInfo'
;
import
useModal
from
'../hooks/useModal'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
ExamVerify
,
{
SubmitDataTypes
}
from
'@/components/ExamVerify'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
GetMemberAppraisalWaitAuditOneGetResponse
}
from
'@/services/MemberV2Api'
;
import
{
history
}
from
'umi'
;
const
TobeEvaluateDetail
=
()
=>
{
const
{
initialValue
}
=
useFetchInfo
(
PublicApi
.
getMemberAbilitySubGet
,
{
id
:
1
})
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[],
initialValue
:
initialValue
});
const
{
id
}
=
usePageStatus
();
const
params
=
useMemo
(()
=>
{
return
id
?
{
id
:
id
.
toString
()
}
:
null
},
[
id
]);
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetMemberAppraisalWaitAuditOneGetResponse
,
{
id
:
string
}
>
(
PublicApi
.
getMemberAppraisalWaitAuditOneGet
,
params
)
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[
'result'
],
initialValue
:
initialValue
})
const
{
visible
,
toggle
}
=
useModal
();
const
onSubmit
=
(
values
:
SubmitDataTypes
)
=>
{
const
onSubmit
=
async
(
values
:
SubmitDataTypes
)
=>
{
console
.
log
(
values
)
const
{
data
,
code
}
=
await
PublicApi
.
postMemberAppraisalWaitAuditOneAudit
({
id
:
id
,
agree
:
values
.
status
,
reason
:
values
.
reason
,
})
if
(
code
===
1000
)
{
history
.
goBack
();
}
}
const
onCancel
=
()
=>
{
toggle
(
false
);
}
const
examValue
=
{
status
:
0
,
reason
:
'123'
}
return
(
<
Spin
spinning=
{
false
}
>
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
`温州市隆昌皮业有限公式`
}
title=
{
initialValue
?.
subject
}
anchors=
{
anchorHeader
}
extra=
{
<
Button
type=
"primary"
onClick=
{
()
=>
toggle
(
true
)
}
icon=
{
<
CheckCircleOutlined
/>
}
>
单据审核
</
Button
>
}
>
<
AuditProcess
title=
"流转进度"
id=
"progress"
/>
<
AuditProcess
innerVerifySteps=
{
initialValue
&&
initialValue
.
verifySteps
?
initialValue
.
verifySteps
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
stepName
,
roleName
:
item
.
roleName
,
status
:
initialValue
?.
currentStep
>
item
.
step
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
verifySteps
)
}
id=
"progress"
/>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"detail"
data=
{
basicInfoList
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
<
Card
title=
"考评项目"
id=
"project"
>
<
Table
columns=
{
projectColumns
}
></
Table
>
<
Card
title=
"考评项目"
id=
"project"
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Table
columns=
{
projectColumns
}
dataSource=
{
initialValue
?.
items
}
></
Table
>
</
Card
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"result"
data=
{
evaluateResultColumn
}
title=
"
基本信息"
column=
{
3
}
/>
<
CustomizeColumn
id=
"result"
data=
{
evaluateResultColumn
}
title=
"
考评结果"
/>
</
div
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Card
title=
"流转记录"
id=
"record"
extra=
{
<
Button
>
内部流转
</
Button
>
}
>
<
Table
columns=
{
recordColumn
}
></
Table
>
</
Card
>
<
div
id=
"record"
>
<
FlowRecords
innerRowkey=
"id"
innerColumns=
{
recordColumn
as
any
}
innerDataSource=
{
initialValue
?.
history
}
/>
</
div
>
</
AnchorPage
>
<
ExamVerify
visible=
{
visible
}
title=
"审核"
onSubmit=
{
onSubmit
}
onCancel=
{
onCancel
}
value=
{
examValu
e
}
/>
<
ExamVerify
visible=
{
visible
}
title=
"审核"
onSubmit=
{
onSubmit
}
onCancel=
{
onCancel
}
showLabel=
{
fals
e
}
/>
</
Spin
>
)
}
...
...
src/pages/member/memberEvaluate/tobeReviewI/index.tsx
View file @
478d92e5
import
React
from
'react'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
import
useEvaluateColumn
,
{
InspectionData
}
from
'../hooks/useEvaluateColumn'
;
import
useEvaluateColumn
,
{
setColumnsByLinks
}
from
'../hooks/useEvaluateColumn'
;
import
{
evaluationListSchema
}
from
'../schema'
;
import
useFetchList
from
'../hooks/useFetchList'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
CustomizeQueryList
from
'../../components/CustomizeQueryList'
;
import
{
GetMemberAppraisalWaitAuditOnePageRequest
,
GetMemberAppraisalWaitAuditOnePageResponse
,
GetMemberAppraisalWaitAuditOnePageResponseDetail
}
from
'@/services/MemberV2Api'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
{
Link
}
from
'umi'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
const
defaultColumns
=
setColumnsByLinks
({
detail
:
'/memberCenter/memberAbility/memberEvaluate/tobeReviewI'
,
});
interface
Iprops
{};
const
List
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
ref
=
useRef
<
any
>
({})
const
{
fetchListData
}
=
useFetchList
();
const
{
columns
}
=
useEvaluateColumn
<
InspectionData
>
([
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
[
rowSelection
,
rowController
]
=
useRowSelectionTable
();
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitAuditOnePageResponseDetail
>
(
defaultColumns
,[
{
title
:
'操作'
,
render
:
(
_text
,
_record
)
=>
(
<
Space
>
<
a
>
审核
</
a
>
<
Link
to=
{
`/memberCenter/memberAbility/memberEvaluate/tobeReviewI/detail?id=${_record.id}`
}
>
审核
</
Link
>
</
Space
>
)
}
...
...
@@ -25,12 +36,21 @@ const List: React.FC<Iprops> = (props: Iprops) => {
const
controllerBtns
=
(
<
Space
>
<
Button
>
批量审核通过
</
Button
>
<
Button
loading=
{
submitLoading
}
onClick=
{
()
=>
handleBatchRemove
(
rowController
.
selectedRowKeys
)
}
type=
"ghost"
>
批量审核通过
</
Button
>
</
Space
>
)
const
handleFetch
=
async
(
params
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAbilitySubPage
,
params
);
const
handleBatchRemove
=
async
(
ids
:
number
[])
=>
{
// setSubmitLoading(true)
// const { code, data } = await PublicApi.postMemberAppraisalDelete({ids: ids});
// setSubmitLoading(false)
// if (code === 1000) {
// ref.current?.submit();
// }
}
const
handleFetch
=
async
(
params
:
GetMemberAppraisalWaitAuditOnePageRequest
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAppraisalWaitAuditOnePage
,
params
);
return
result
}
...
...
@@ -38,11 +58,13 @@ const List: React.FC<Iprops> = (props: Iprops) => {
<
Card
>
<
CustomizeQueryList
columns=
{
columns
}
rowSelection=
{
rowSelection
as
any
}
schema=
{
evaluationListSchema
}
fetchListData=
{
handleFetch
}
expressionScope=
{
{
controllerBtns
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
);
useAsyncSelect
(
'status'
,
fetchStatusOptions
);
}
}
/>
</
Card
>
...
...
src/pages/member/memberEvaluate/tobeReviewII/detail.tsx
View file @
478d92e5
import
React
from
'react'
;
import
React
,
{
useMemo
}
from
'react'
;
import
{
Spin
,
Card
,
Table
,
Button
}
from
'antd'
;
import
{
CheckCircleOutlined
}
from
'@ant-design/icons'
;
import
AnchorPage
from
'@/layouts/AnchorPage'
;
...
...
@@ -7,57 +7,83 @@ import AuditProcess from '@/components/AuditProcess';
import
{
PublicApi
}
from
'@/services/api'
;
import
{
projectColumns
,
recordColumn
}
from
'../columns/detail'
;
import
useGetDetailCommon
from
'../hooks/useGetDetailCommon'
;
import
useFetchInfo
from
'../hooks/useFetchInfo'
;
import
useModal
from
'../hooks/useModal'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
ExamVerify
,
{
SubmitDataTypes
}
from
'@/components/ExamVerify'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
GetMemberAppraisalWaitAuditTwoGetResponse
}
from
'@/services/MemberV2Api'
;
import
{
history
}
from
'umi'
;
const
TobeEvaluateDetail
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
params
=
useMemo
(()
=>
{
return
id
?
{
id
:
id
.
toString
()
}
:
null
},
[
id
]);
const
{
loading
,
initialValue
}
=
useInitialValue
<
GetMemberAppraisalWaitAuditTwoGetResponse
,
{
id
:
string
}
>
(
PublicApi
.
getMemberAppraisalWaitAuditTwoGet
,
params
)
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[
'result'
],
initialValue
:
initialValue
})
const
TobeReviewDetailII
=
()
=>
{
const
{
initialValue
}
=
useFetchInfo
(
PublicApi
.
getMemberAbilitySubGet
,
{
id
:
1
})
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[],
initialValue
:
initialValue
});
const
{
visible
,
toggle
}
=
useModal
();
const
onSubmit
=
(
values
:
SubmitDataTypes
)
=>
{
const
onSubmit
=
async
(
values
:
SubmitDataTypes
)
=>
{
console
.
log
(
values
)
const
{
data
,
code
}
=
await
PublicApi
.
postMemberAppraisalWaitAuditTwoAudit
({
id
:
id
,
agree
:
values
.
status
,
reason
:
values
.
reason
,
})
if
(
code
===
1000
)
{
history
.
goBack
();
}
}
const
onCancel
=
()
=>
{
toggle
(
false
);
}
const
examValue
=
{
status
:
0
,
reason
:
'123'
}
return
(
<
Spin
spinning=
{
false
}
>
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
`温州市隆昌皮业有限公式`
}
title=
{
initialValue
?.
subject
}
anchors=
{
anchorHeader
}
extra=
{
<
Button
type=
"primary"
onClick=
{
()
=>
toggle
(
true
)
}
icon=
{
<
CheckCircleOutlined
/>
}
>
单据审核
</
Button
>
}
>
<
AuditProcess
title=
"流转进度"
id=
"progress"
/>
<
AuditProcess
innerVerifySteps=
{
initialValue
&&
initialValue
.
verifySteps
?
initialValue
.
verifySteps
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
stepName
,
roleName
:
item
.
roleName
,
status
:
initialValue
?.
currentStep
>
item
.
step
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
verifySteps
)
}
id=
"progress"
/>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"detail"
data=
{
basicInfoList
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
<
Card
title=
"考评项目"
id=
"project"
>
<
Table
columns=
{
projectColumns
}
></
Table
>
<
Card
title=
"考评项目"
id=
"project"
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Table
columns=
{
projectColumns
}
dataSource=
{
initialValue
?.
items
}
></
Table
>
</
Card
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"result"
data=
{
evaluateResultColumn
}
title=
"
基本信息"
column=
{
3
}
/>
<
CustomizeColumn
id=
"result"
data=
{
evaluateResultColumn
}
title=
"
考评结果"
/>
</
div
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Card
title=
"流转记录"
id=
"record"
extra=
{
<
Button
>
内部流转
</
Button
>
}
>
<
Table
columns=
{
recordColumn
}
></
Table
>
</
Card
>
<
div
id=
"record"
>
<
FlowRecords
innerRowkey=
"id"
innerColumns=
{
recordColumn
as
any
}
innerDataSource=
{
initialValue
?.
history
}
/>
</
div
>
</
AnchorPage
>
<
ExamVerify
visible=
{
visible
}
title=
"审核"
onSubmit=
{
onSubmit
}
onCancel=
{
onCancel
}
value=
{
examValu
e
}
/>
<
ExamVerify
visible=
{
visible
}
title=
"审核"
onSubmit=
{
onSubmit
}
onCancel=
{
onCancel
}
showLabel=
{
fals
e
}
/>
</
Spin
>
)
}
export
default
Tobe
ReviewDetailII
export
default
Tobe
EvaluateDetail
src/pages/member/memberEvaluate/tobeReviewII/index.tsx
View file @
478d92e5
import
React
from
'react'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
import
useEvaluateColumn
,
{
InspectionData
}
from
'../hooks/useEvaluateColumn'
;
import
useEvaluateColumn
,
{
setColumnsByLinks
}
from
'../hooks/useEvaluateColumn'
;
import
{
evaluationListSchema
}
from
'../schema'
;
import
useFetchList
from
'../hooks/useFetchList'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
CustomizeQueryList
from
'../../components/CustomizeQueryList'
;
import
{
GetMemberAppraisalWaitAuditTwoPageRequest
,
GetMemberAppraisalWaitAuditTwoPageResponseDetail
}
from
'@/services/MemberV2Api'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
{
Link
}
from
'umi'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
const
defaultColumns
=
setColumnsByLinks
({
detail
:
'/memberCenter/memberAbility/memberEvaluate/tobeReviewII'
,
});
interface
Iprops
{};
const
TobeReviewListII
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
List
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
ref
=
useRef
<
any
>
({})
const
{
fetchListData
}
=
useFetchList
();
const
{
columns
}
=
useEvaluateColumn
<
InspectionData
>
([
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
[
rowSelection
,
rowController
]
=
useRowSelectionTable
();
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitAuditTwoPageResponseDetail
>
(
defaultColumns
,[
{
title
:
'操作'
,
render
:
(
_text
,
_record
)
=>
(
<
Space
>
<
a
>
审核
</
a
>
<
Link
to=
{
`/memberCenter/memberAbility/memberEvaluate/tobeReviewII/detail?id=${_record.id}`
}
>
审核
</
Link
>
</
Space
>
)
}
...
...
@@ -25,12 +36,21 @@ const TobeReviewListII: React.FC<Iprops> = (props: Iprops) => {
const
controllerBtns
=
(
<
Space
>
<
Button
>
批量审核通过
</
Button
>
<
Button
loading=
{
submitLoading
}
onClick=
{
()
=>
handleBatchRemove
(
rowController
.
selectedRowKeys
)
}
>
批量审核通过
</
Button
>
</
Space
>
)
const
handleFetch
=
async
(
params
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAbilitySubPage
,
params
);
const
handleBatchRemove
=
async
(
ids
:
number
[])
=>
{
// setSubmitLoading(true)
// const { code, data } = await PublicApi.postMemberAppraisalDelete({ids: ids});
// setSubmitLoading(false)
// if (code === 1000) {
// ref.current?.submit();
// }
}
const
handleFetch
=
async
(
params
:
GetMemberAppraisalWaitAuditTwoPageRequest
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAppraisalWaitAuditTwoPage
,
params
);
return
result
}
...
...
@@ -38,14 +58,16 @@ const TobeReviewListII: React.FC<Iprops> = (props: Iprops) => {
<
Card
>
<
CustomizeQueryList
columns=
{
columns
}
rowSelection=
{
rowSelection
as
any
}
schema=
{
evaluationListSchema
}
fetchListData=
{
handleFetch
}
expressionScope=
{
{
controllerBtns
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
);
useAsyncSelect
(
'status'
,
fetchStatusOptions
);
}
}
/>
</
Card
>
)
}
export
default
TobeReviewListII
export
default
List
src/pages/member/memberEvaluate/tobeSubmitSummary/detail.tsx
View file @
478d92e5
...
...
@@ -11,12 +11,45 @@ import { modifyEvaluateScore, evaluateScoreRes } from './schema';
import
{
PublicApi
}
from
'@/services/api'
;
import
{
projectColumns
,
recordColumn
}
from
'../columns/detail'
;
import
useGetDetailCommon
from
'../hooks/useGetDetailCommon'
;
import
useFetchInfo
from
'../hooks/useFetchInfo'
;
import
useModal
from
'../hooks/useModal'
;
import
styles
from
'./detail.less'
;
import
theme
from
'../../../../../config/lingxi.theme.config'
;
import
createRichTextUtils
from
'@/components/RangeTime/createRichText'
;
import
FormilyCheckbox
from
'../../components/FormilyCheckBox'
import
{
GetMemberAppraisalWaitSubmitGetResponse
}
from
'@/services/MemberV2Api'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
useInitialValue
from
'../../common/hooks/useInitialValue'
;
import
{
findLastIndexFlowState
}
from
'@/utils'
;
import
FlowRecords
from
'@/components/FlowRecords'
;
import
NiceForm
from
'@/components/NiceForm'
;
type
EditDataType
=
{
appraisalId
:
number
appraisalReport
:
{
name
:
string
,
url
:
string
}[],
grade
:
string
,
id
:
number
,
scoreWeight
:
string
sendAppraisal
:
0
|
1
,
templates
:
{
name
:
string
,
url
:
string
}[]
type
:
null
userId
:
number
}
type
SubmitData
=
{
totalScore
:
number
,
result
:
string
,
notifyMember
:
boolean
,
resultAttachments
:
{
name
:
string
,
url
:
string
}[]
}
const
formActions
=
createFormActions
();
const
resultForm
=
createFormActions
();
...
...
@@ -24,8 +57,12 @@ const resultForm = createFormActions();
const
TobeEvaluateDetail
=
()
=>
{
const
{
visible
,
toggle
}
=
useModal
();
const
{
visible
:
resultVisible
,
toggle
:
resultToggle
}
=
useModal
();
const
{
initialValue
}
=
useFetchInfo
(
PublicApi
.
getMemberAbilitySubGet
,
{
id
:
1
})
const
{
anchorHeader
,
basicInfoList
}
=
useGetDetailCommon
({
blackList
:
[
'result'
],
initialValue
:
initialValue
});
const
{
id
}
=
usePageStatus
();
const
params
=
useMemo
(()
=>
{
return
id
?
{
id
:
id
.
toString
()
}
:
null
},
[
id
]);
const
{
loading
,
initialValue
,
setInitialValue
,
refresh
}
=
useInitialValue
<
GetMemberAppraisalWaitSubmitGetResponse
,
{
id
:
string
}
>
(
PublicApi
.
getMemberAppraisalWaitSubmitGet
,
params
)
const
{
anchorHeader
,
basicInfoList
,
evaluateResultColumn
}
=
useGetDetailCommon
({
blackList
:
[
'result'
],
initialValue
:
initialValue
})
const
[
submitLoading
,
setSubmitLoading
]
=
useState
<
boolean
>
(
false
);
const
[
editingScoreData
,
setEditingScoreData
]
=
useState
<
any
>
({})
const
withEditProjectColumns
=
useMemo
(()
=>
{
const
temp
=
projectColumns
.
concat
({
...
...
@@ -39,10 +76,10 @@ const TobeEvaluateDetail = () => {
const
editScore
=
(
record
:
any
)
=>
{
setEditingScoreData
(
record
);
toggle
(
true
);
}
const
onDrawerCancel
=
()
=>
{
// handleCancel();
toggle
(
false
)
}
...
...
@@ -54,36 +91,103 @@ const TobeEvaluateDetail = () => {
}
}
const
onSubmit
=
(
value
:
any
)
=>
{
console
.
log
(
value
);
const
onSubmit
=
(
value
:
EditDataType
)
=>
{
const
{
items
}
=
initialValue
;
const
list
=
[...
items
];
const
targetIndex
=
list
.
findIndex
((
_item
)
=>
value
.
id
===
_item
.
id
);
if
(
targetIndex
>
-
1
)
{
list
[
targetIndex
]
=
{
...
list
[
targetIndex
],
scoreWeight
:
+
value
.
scoreWeight
,
grade
:
+
value
.
grade
,
score
:
+
value
.
scoreWeight
*
+
value
.
grade
/
100
,
templates
:
value
.
templates
?.
map
((
_row
)
=>
{
return
{
name
:
_row
.
name
,
url
:
_row
.
url
}
}),
appraisalReport
:
value
.
appraisalReport
?.
map
((
_row
)
=>
{
return
{
name
:
_row
.
name
,
url
:
_row
.
url
}
})
}
}
const
newObject
=
{
...
initialValue
,
items
:
list
,
}
setInitialValue
(
newObject
)
toggle
(
false
);
}
const
resultOnSubmit
=
(
value
)
=>
{
const
resultOnSubmit
=
async
(
value
:
SubmitData
)
=>
{
console
.
log
(
value
);
resultToggle
(
false
);
setSubmitLoading
(
true
)
const
postData
=
{
id
:
id
,
...
value
,
notifyMember
:
value
.
notifyMember
?
1
:
0
,
items
:
initialValue
.
items
.
map
((
_row
)
=>
({
id
:
_row
.
id
,
scoreWeight
:
_row
.
scoreWeight
,
grade
:
_row
.
grade
,
templates
:
_row
.
templates
,
reports
:
_row
.
appraisalReport
})),
resultAttachments
:
value
.
resultAttachments
.
map
((
_item
)
=>
({
name
:
_item
.
name
,
url
:
_item
.
url
}))
}
const
{
code
,
data
}
=
await
PublicApi
.
postMemberAppraisalWaitSubmitSubmit
(
postData
as
any
);
setSubmitLoading
(
false
)
if
(
code
===
1000
)
{
refresh
(
params
);
resultToggle
(
false
);
}
}
return
(
<
Spin
spinning=
{
false
}
>
<
Spin
spinning=
{
loading
}
>
<
AnchorPage
title=
{
`温州市隆昌皮业有限公式`
}
title=
{
initialValue
?.
subject
}
anchors=
{
anchorHeader
}
extra=
{
<
Button
onClick=
{
()
=>
resultToggle
(
true
)
}
icon=
{
<
CheckCircleOutlined
/>
}
>
考评结果
</
Button
>
(
!
initialValue
?.
totalScore
&&
<
Button
onClick=
{
()
=>
resultToggle
(
true
)
}
icon=
{
<
CheckCircleOutlined
/>
}
>
考评结果
</
Button
>
)
}
>
<
AuditProcess
title=
"流转进度"
id=
"progress"
/>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
id=
"detail"
data=
{
basicInfoList
}
title=
"基本信息"
column=
{
3
}
/>
<
AuditProcess
innerVerifySteps=
{
initialValue
&&
initialValue
.
verifySteps
?
initialValue
.
verifySteps
.
map
(
item
=>
({
step
:
item
.
step
,
stepName
:
item
.
stepName
,
roleName
:
item
.
roleName
,
status
:
initialValue
?.
currentStep
>=
item
.
step
?
'finish'
:
'wait'
,
}))
:
[]
}
innerVerifyCurrent=
{
findLastIndexFlowState
(
initialValue
?.
verifySteps
)
}
id=
"progress"
/>
<
div
id=
"detail"
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
CustomizeColumn
data=
{
basicInfoList
}
title=
"基本信息"
column=
{
3
}
/>
</
div
>
<
Card
title=
"考评项目"
id=
"project"
>
<
Table
columns=
{
withEditProjectColumns
}
></
Table
>
<
Card
title=
"考评项目"
id=
"project"
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Table
columns=
{
withEditProjectColumns
}
rowKey=
{
"id"
}
dataSource=
{
initialValue
?.
items
}
></
Table
>
</
Card
>
<
div
style=
{
{
margin
:
`${theme["@margin-md"]} 0`
}
}
>
<
Card
title=
"流转记录"
id=
"record"
extra=
{
<
Button
>
内部流转
</
Button
>
}
>
<
Table
columns=
{
recordColumn
}
></
Table
>
</
Card
>
<
div
id=
"record"
>
<
FlowRecords
innerRowkey=
"id"
innerColumns=
{
recordColumn
as
any
}
innerDataSource=
{
initialValue
?.
history
}
/>
</
div
>
</
AnchorPage
>
<
Drawer
...
...
@@ -125,18 +229,18 @@ const TobeEvaluateDetail = () => {
<
Button
onClick=
{
()
=>
resultToggle
(
false
)
}
style=
{
{
marginRight
:
8
}
}
>
取消
</
Button
>
<
Button
onClick=
{
()
=>
onDrawerConfirm
(
'result'
)
}
type=
"primary"
>
<
Button
loading=
{
submitLoading
}
onClick=
{
()
=>
onDrawerConfirm
(
'result'
)
}
type=
"primary"
>
确认
</
Button
>
</
div
>
}
>
<
Schema
Form
onSubmit=
{
o
nSubmit
}
initialValues=
{
initialValue
}
<
Nice
Form
onSubmit=
{
resultO
nSubmit
}
//
initialValues={initialValue}
expressionScope=
{
createRichTextUtils
()
}
schema=
{
evaluateScoreRes
}
actions=
{
formActions
}
actions=
{
resultForm
}
components=
{
{
FormilyUploadFiles
,
ArrayTable
,
...
...
src/pages/member/memberEvaluate/tobeSubmitSummary/index.tsx
View file @
478d92e5
import
React
from
'react'
;
import
{
Card
,
Space
,
Button
}
from
'antd'
import
useEvaluateColumn
,
{
InspectionData
}
from
'../hooks/useEvaluateColumn'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
Card
,
Space
,
Button
,
Spin
}
from
'antd'
import
useEvaluateColumn
,
{
setColumnsByLinks
}
from
'../hooks/useEvaluateColumn'
;
import
{
evaluationListSchema
}
from
'../schema'
;
import
useFetchList
from
'../hooks/useFetchList'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
CustomizeQueryList
from
'../../components/CustomizeQueryList'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
import
{
GetMemberAppraisalWaitSubmitPageRequest
,
GetMemberAppraisalWaitSubmitPageResponseDetail
}
from
'@/services/MemberV2Api'
;
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
Link
}
from
'umi'
;
import
{
querySchema
}
from
'../tobeEvaluate/schema'
;
const
defaultColumns
=
setColumnsByLinks
({
detail
:
'/memberCenter/memberAbility/memberEvaluate/tobeSubmitSummary/detail'
,
});
interface
Iprops
{};
const
List
:
React
.
FC
<
Iprops
>
=
(
props
:
Iprops
)
=>
{
const
{
fetchListData
}
=
useFetchList
();
const
{
columns
}
=
useEvaluateColumn
<
InspectionData
>
(
[
const
{
columns
,
fetchStatusOptions
}
=
useEvaluateColumn
<
GetMemberAppraisalWaitSubmitPageResponseDetail
>
(
defaultColumns
,
[
{
title
:
'操作'
,
render
:
(
_text
,
_record
)
=>
(
<
Space
>
<
a
>
提交
</
a
>
<
a
>
编辑
</
a
>
{
_record
.
submit
&&
(
<
Link
to=
{
`/memberCenter/memberAbility/memberEvaluate/tobeSubmitSummary/detail?id=${_record.id}`
}
>
提交
</
Link
>
)
}
</
Space
>
)
}
])
const
controllerBtns
=
(
<
Space
>
<
Button
>
批量提交
</
Button
>
</
Space
>
)
const
handleFetch
=
async
(
params
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAbilitySubPage
,
params
);
const
handleFetch
=
async
(
params
:
GetMemberAppraisalWaitSubmitPageRequest
)
=>
{
const
result
=
fetchListData
(
PublicApi
.
getMemberAppraisalWaitSubmitPage
,
params
);
return
result
}
...
...
@@ -39,11 +44,11 @@ const List: React.FC<Iprops> = (props: Iprops) => {
<
Card
>
<
CustomizeQueryList
columns=
{
columns
}
schema=
{
evaluationList
Schema
}
schema=
{
query
Schema
}
fetchListData=
{
handleFetch
}
expressionScope=
{
{
controllerBtns
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
);
useAsyncSelect
(
'status'
,
fetchStatusOptions
);
}
}
/>
</
Card
>
...
...
src/pages/member/memberEvaluate/tobeSubmitSummary/schema.tsx
View file @
478d92e5
...
...
@@ -15,7 +15,12 @@ export const modifyEvaluateScore: ISchema = {
labelAlign
:
'left'
},
properties
:
{
projectName
:
{
id
:
{
title
:
'id'
,
type
:
'string'
,
display
:
false
},
name
:
{
title
:
'考评项目'
,
type
:
'string'
,
editable
:
false
...
...
@@ -25,25 +30,25 @@ export const modifyEvaluateScore: ISchema = {
type
:
'string'
,
editable
:
false
,
},
memb
erName
:
{
us
erName
:
{
title
:
'考评人'
,
type
:
"string"
,
editable
:
false
,
},
isMemberScore
:
{
sendAppraisal
:
{
title
:
'考评人打分'
,
type
:
'string'
,
editable
:
false
},
w
eight
:
{
scoreW
eight
:
{
title
:
'权重'
,
type
:
'string'
,
},
scoring
:
{
grade
:
{
title
:
'考评计分'
,
type
:
'string'
,
},
fil
es
:
{
templat
es
:
{
title
:
'考评模板'
,
type
:
'object'
,
'x-component'
:
'FormilyUploadFiles'
,
...
...
@@ -51,7 +56,7 @@ export const modifyEvaluateScore: ISchema = {
fileContainerClassName
:
'customizeFileContainer'
}
},
r
eport
:
{
appraisalR
eport
:
{
title
:
'考评报告'
,
type
:
'object'
,
'x-component'
:
'FormilyUploadFiles'
,
...
...
@@ -80,20 +85,23 @@ export const evaluateScoreRes = {
labelAlign
:
'left'
},
properties
:
{
s
core
:
{
totalS
core
:
{
title
:
'考评最终分'
,
type
:
'string'
,
require
:
true
,
},
result
:
{
title
:
'考评结果'
,
type
:
'textarea'
,
require
:
true
,
},
noti
ceResult
:
{
noti
fyMember
:
{
title
:
"{{ text('通知考评结果',help('将考评结果通知给考察对象')) }}"
,
type
:
"string"
,
'x-component'
:
'FormilyCheckbox'
'x-component'
:
'FormilyCheckbox'
,
require
:
true
,
},
file
s
:
{
resultAttachment
s
:
{
title
:
'考评模板'
,
type
:
'object'
,
'x-component'
:
'FormilyUploadFiles'
,
...
...
src/pages/transaction/purchaseAbility/components/modalOperate/index.tsx
View file @
478d92e5
...
...
@@ -129,9 +129,7 @@ const ModalOperate: React.FC<IProps> = (props: any) => {
width
:
'100%'
},
format
:
'YYYY-MM-DD HH:mm:ss'
,
disabledDate
:(
current
)
=>
{
return
moment
().
calendar
();
},
disabled
:
true
}
}
/>
case
'date'
:
...
...
src/pages/transaction/transactionRules/addRule.tsx
View file @
478d92e5
...
...
@@ -46,6 +46,10 @@ const AddRule:React.FC<{}> = (props) => {
params
.
type
=
dataSource
[
0
].
type
})
if
(
params
?.
time
)
{
params
.
time
=
Number
(
params
.
time
)
}
let
res
:
any
=
{}
if
(
pageStatus
===
PageStatus
.
EDIT
){
res
=
await
PublicApi
.
postOrderTradingRulesUpdata
(
params
)
...
...
src/pages/transaction/transactionRules/components/RuleSetting.tsx
View file @
478d92e5
import
React
,
{
useEffect
,
use
Ref
,
use
State
}
from
'react'
import
React
,
{
useEffect
,
useState
}
from
'react'
import
{
usePageStatus
,
PageStatus
}
from
'@/hooks/usePageStatus'
import
{
useInitValue
}
from
'@/formSchema/effects/useInitValue'
import
EyePreview
from
'@/components/EyePreview'
import
{
findItemAndDelete
}
from
'@/utils'
import
{
ISchemaFormActions
,
ISchema
,
FormEffectHooks
,
createAsyncFormActions
}
from
'@formily/antd'
import
{
ISchemaFormActions
,
ISchema
,
FormEffectHooks
}
from
'@formily/antd'
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
import
{
createAddContractTemplateEffect
,
useUnitPreview
}
from
'../effects'
import
{
createAddContractTemplateEffect
}
from
'../effects'
import
{
PublicApi
}
from
'@/services/api'
import
{
PlusOutlined
,
LinkOutlined
,
PlusOutlined
,
QuestionCircleOutlined
,
}
from
'@ant-design/icons'
import
{
Button
,
message
}
from
'antd'
import
{
Button
,
message
,
Tooltip
}
from
'antd'
import
NiceForm
from
'@/components/NiceForm'
import
ModalTable
from
'@/components/ModalTable'
import
{
GlobalConfig
}
from
'@/global/config'
...
...
@@ -256,6 +254,11 @@ const RuleSetting:React.FC<RuleSettingProps> = (props) => {
addSchemaAction
.
setFieldValue
(
'isElectronicContract'
,
data
.
isElectronicContract
?
true
:
false
)
addSchemaAction
.
setFieldValue
(
'transactionProcesssId'
,
data
.
transactionProcesssId
)
addSchemaAction
.
setFieldValue
(
'isTacitlyApprove'
,
data
.
isTacitlyApprove
)
if
(
data
.
type
===
1
)
{
addSchemaAction
.
setFieldState
(
'time'
,
state
=>
{
state
.
visible
=
true
})
}
setInitialValue
(
data
)
}
if
(
id
!=
''
)
{
...
...
@@ -288,6 +291,13 @@ const RuleSetting:React.FC<RuleSettingProps> = (props) => {
})
}
const
help
=
(
text
:
string
,
desc
:
string
)
=>
(<>
{
text
}
<
Tooltip
title=
{
desc
}
>
<
QuestionCircleOutlined
/>
</
Tooltip
>
</>)
return
(
<>
<
NiceForm
...
...
@@ -298,7 +308,8 @@ const RuleSetting:React.FC<RuleSettingProps> = (props) => {
tableColumns
,
tableAddButton
,
paginationChange
,
productsLength
productsLength
,
help
}
}
components=
{
{
SelectProcesss
,
...
...
@@ -325,10 +336,16 @@ const RuleSetting:React.FC<RuleSettingProps> = (props) => {
setFieldState
(
"MEGA_LAYOUT1_1"
,
state
=>
{
state
.
visible
=
false
})
setFieldState
(
"time"
,
state
=>
{
state
.
visible
=
false
})
}
else
{
setFieldState
(
"MEGA_LAYOUT1_1"
,
state
=>
{
state
.
visible
=
true
})
setFieldState
(
"time"
,
state
=>
{
state
.
visible
=
true
})
}
})
}
}
...
...
src/pages/transaction/transactionRules/schema/index.tsx
View file @
478d92e5
...
...
@@ -74,6 +74,22 @@ export const ruleDetailSchema: ISchema = padRequiredMessage({
// fetchSearch: PublicApi.getOrderTradingRulesTransactionProcessList,
// },
},
"time"
:
{
type
:
'string'
,
title
:
"{{help('订单取消时间', '单后超过多少小时未支付后自动取消订单')}}"
,
"x-component-props"
:
{
placeholder
:
"请填写订单取消时间"
,
style
:
{
width
:
'100%'
},
suffix
:
'小时'
},
visible
:
false
,
'x-rules'
:
[
{
pattern
:
/^
\d
+
(\.\d{1})?
$/
,
message
:
'数值仅限一位小数'
,
}
],
},
MEGA_LAYOUT1_1
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
...
...
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