const { required, phoneOrMobile } = CjmForm. rules;
export default function detail ( ) {
const { query } = getRouterInfo ( location) ;
const formRef = useRef ( null ) ;
const [ crumbList, setCrumbList] = useState ( [
{
url : "/wenling/Reviewer" ,
name : "审核人员" ,
} ,
{
name : query. type == "look" ? "查看" : "编辑" ,
} ,
] ) ;
const [ form, setForm] = useState ( {
auditNodeConfig : [
{
nextAuditNode : "农办审批" ,
userList : [
{
batchAudit : false ,
phone : "" ,
} ,
] ,
} ,
{
nextAuditNode : "农水局审批" ,
userList : [
{
batchAudit : false ,
phone : "" ,
} ,
] ,
} ,
{
nextAuditNode : "同步财政局审核结果" ,
userList : [
{
batchAudit : false ,
phone : "" ,
} ,
] ,
} ,
] ,
} ) ;
const [ loading, setLoading] = useState ( false ) ;
const [ spinning, setSpinning] = useState ( false ) ;
useEffect ( ( ) => {
getConfigInfo ( ) ;
} , [ ] ) ;
async function getConfigInfo ( ) {
setSpinning ( true ) ;
const res = await configLook ( { confId : query. confId } ) ;
if ( res. results && res. state && res. state == 200 ) {
setForm ( transformData ( res. results) ) ;
} else {
if ( query. processCode == "10001002" ) {
setForm ( {
auditNodeConfig : [
{
nextAuditNode : "农办审批" ,
userList : [
{
batchAudit : false ,
phone : "" ,
} ,
] ,
} ,
] ,
} ) ;
}
}
setSpinning ( false ) ;
}
const rules = useMemo ( ( ) => {
let newRule = { } ;
form[ "auditNodeConfig" ] . forEach ( ( item, key ) => {
item[ "userList" ] . forEach ( ( record, recordKey ) => {
newRule[ ` auditNodeConfig. ${ key} .userList. ${ recordKey} .phone ` ] = [
required,
phoneOrMobile,
] ;
newRule[ ` auditNodeConfig. ${ key} .userList. ${ recordKey} .userId ` ] = [
required,
] ;
} ) ;
} ) ;
return newRule;
} , [ form] ) ;
const modalForm = useMemo ( ( ) => {
let newForm = { } ;
form[ "auditNodeConfig" ] . forEach ( ( item, key ) => {
item[ "userList" ] . forEach ( ( record, recordKey ) => {
newForm[ ` auditNodeConfig. ${ key} .userList. ${ recordKey} .phone ` ] =
record[ "phone" ] ;
newForm[ ` auditNodeConfig. ${ key} .userList. ${ recordKey} .userId ` ] =
record[ "userId" ] ;
} ) ;
} ) ;
return newForm;
} , [ form] ) ;
const getValue = ( eventOrvalue ) => {
const type = typeof eventOrvalue;
if (
type === "object" &&
eventOrvalue !== null &&
eventOrvalue. target &&
eventOrvalue. target. value
) {
return eventOrvalue. target. value;
}
return eventOrvalue;
} ;
const setFormData = ( fieldName, index, recordKey ) => {
return ( eventOrvalue ) => {
let value = getValue ( eventOrvalue) ;
if ( fieldName == "batchAudit" ) {
value = eventOrvalue. target. checked;
}
form[ "auditNodeConfig" ] [ index] [ "userList" ] [ recordKey] [ fieldName] = value;
setForm ( Object. assign ( { } , form) ) ;
} ;
} ;
const addHandle = ( index ) => {
const listLen = get ( form, ` auditNodeConfig[ ${ index} ].userList ` , [ ] ) . length;
if ( listLen >= 4 ) {
Message. warning ( "最多添加4个审批人员!" ) ;
} else {
form[ "auditNodeConfig" ] [ index] [ "userList" ] . push ( {
batchAudit : false ,
phone : "" ,
} ) ;
setForm ( Object. assign ( { } , form) ) ;
}
} ;
const saveHandle = async ( ) => {
setLoading ( true ) ;
const valid = await formRef. current. validate ( ) ;
if ( valid) {
let data = { ... form } ;
data[ "confId" ] = query. confId;
data[ "processCode" ] = query. processCode;
const res = await configEdit ( transformTree ( data) ) ;
if ( res. state && res. state == 200 ) {
Message. success ( "操作成功" ) ;
historyBack ( ) ;
} else {
Message. error ( "操作失败,请重试!" ) ;
}
}
setLoading ( false ) ;
} ;
const delHandle = ( index, recordKey ) => {
form[ "auditNodeConfig" ] [ index] [ "userList" ] . splice ( recordKey, 1 ) ;
setForm ( Object. assign ( { } , form) ) ;
} ;
return (
< div className= { styles. reviewerBox} >
< Spin spinning= { spinning} >
< CrumbBar list= { crumbList} / >
< CjmForm
labelWidth= "180px"
ref= { formRef}
model= { modalForm}
rules= { rules}
>
< CjmForm. Item label= "审批类型:" >
< CjmInput
value= { query. processName}
disabled= { true }
style= { { width : "380px" } }
/ >
< / CjmForm. Item>
{ form &&
form. auditNodeConfig. map ( ( item, index ) => {
return (
< div className= { styles. auditItem} key= { index} >
< h2 style= { { marginLeft : "24px" } } >
{ item[ "nextAuditNode" ] }
< / h2>
{ item[ "userList" ] &&
item[ "userList" ] . map ( ( record, recordKey ) => {
return (
< div key= { recordKey} className= { styles. formItem} >
< CjmForm. Item
label= "审批人名称:"
prop= { ` auditNodeConfig. ${ index} .userList. ${ recordKey} .userId ` }
>
< RemoteSelect
style= { { width : "380px" } }
disabled= { query. type == "look" ? true : false }
labelKey= "userName"
valueKey= "userId"
value= { record. userId}
label= { record. userName}
remoteUrl= { ` ${ api. reviewer. departmentId} ?departmentId= ${ query. optDeptId} &disableFlag=1 ` }
onChange= { {
userName : setFormData (
"userName" ,
index,
recordKey
) ,
userId : setFormData ( "userId" , index, recordKey) ,
departmentId : setFormData (
"deptId" ,
index,
recordKey
) ,
mobileId : setFormData (
"phone" ,
index,
recordKey
) ,
} }
/ >
< / CjmForm. Item>
< CjmForm. Item
label= "审批人手机号:"
prop= { ` auditNodeConfig. ${ index} .userList. ${ recordKey} .phone ` }
>
< CjmInput
disabled= { query. type == "look" ? true : false }
style= { { width : "380px" } }
value= { record. phone}
onChange= { setFormData ( "phone" , index, recordKey) }
/ >
< / CjmForm. Item>
< CjmForm. Item label= "审批操作:" prop= "batchAudit" >
< Checkbox
disabled= { query. type == "look" ? true : false }
checked= { record. batchAudit}
onChange= { setFormData (
"batchAudit" ,
index,
recordKey
) }
>
批量通过
< / Checkbox>
< span style= { { marginLeft : "24px" } } >
默认单个审核,设置批量审核后允许该节点可批量审核
< / span>
< / CjmForm. Item>
< Divider className= { styles. line} / >
{ recordKey != 0 && (
< img
className= { styles. close}
src= { deleteImg}
onClick= { ( ) => delHandle ( index, recordKey) }
/ >
) }
< / div>
) ;
} ) }
{ query. type !== "look" && index == 0 && (
< Button
type= "primary"
style= { { marginLeft : "224px" } }
onClick= { ( ) => addHandle ( index) }
>
+ 新增(最多添加4 个审批人员)
< / Button>
) }
< / div>
) ;
} ) }
< / CjmForm>
< Button className= { styles. btnLeave} onClick= { ( ) => historyBack ( ) } >
返回
< / Button>
{ query. type !== "look" && (
< Button
type= "primary"
className= { styles. btnSave}
loading= { loading}
onClick= { saveHandle}
>
保存
< / Button>
) }
< / Spin>
< / div>
) ;
}