Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
frontend
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
Schedules
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
h5-communicate
frontend
Commits
434d112a
Commit
434d112a
authored
Jun 29, 2020
by
熊成伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debug
parent
dada99ea
Pipeline
#15808
passed with stages
in 1 minute and 4 seconds
Changes
15
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
790 additions
and
64 deletions
+790
-64
Process.jsx
src/pages/EventProcessing/Process.jsx
+4
-4
Application.jsx
src/pages/EventProcessing/UnCommon/Application.jsx
+245
-0
Meeting.jsx
src/pages/EventProcessing/UnCommon/Meeting.jsx
+245
-0
People.jsx
src/pages/EventProcessing/UnCommon/People.jsx
+60
-0
Adjunct.jsx
src/pages/EventProcessing/commponents/Adjunct.jsx
+2
-2
Applicate.jsx
src/pages/EventProcessing/commponents/Applicate.jsx
+60
-0
Basic.jsx
src/pages/EventProcessing/commponents/Basic.jsx
+2
-2
Flow.jsx
src/pages/EventProcessing/commponents/Flow.jsx
+1
-1
Goods.jsx
src/pages/EventProcessing/commponents/Goods.jsx
+30
-0
Option.jsx
src/pages/EventProcessing/commponents/Option.jsx
+1
-1
index.less
src/pages/EventProcessing/commponents/index.less
+50
-0
index.less
src/pages/EventProcessing/index.less
+53
-0
Info.jsx
src/pages/UnCommon/Mail/Info.jsx
+13
-43
Send.jsx
src/pages/UnCommon/Mail/Send.jsx
+21
-11
router.js
src/router.js
+3
-0
No files found.
src/pages/EventProcessing/Process.jsx
View file @
434d112a
...
@@ -4,10 +4,10 @@ import {WingBlank, WhiteSpace, ActionSheet, Toast} from 'antd-mobile'
...
@@ -4,10 +4,10 @@ import {WingBlank, WhiteSpace, ActionSheet, Toast} from 'antd-mobile'
import
axiosRequest
from
'../../utils/request'
;
import
axiosRequest
from
'../../utils/request'
;
import
TopTabs
from
'../../components/Tabs/BlankTabs'
import
TopTabs
from
'../../components/Tabs/BlankTabs'
import
Skeleton
from
'../../components/Skeleton'
import
Skeleton
from
'../../components/Skeleton'
import
Basic
from
'./Basic'
import
Basic
from
'./
commponents/
Basic'
import
Adjunct
from
'./Adjunct'
import
Adjunct
from
'./
commponents/
Adjunct'
import
Flow
from
'./Flow'
;
import
Flow
from
'./
commponents/
Flow'
;
import
Option
from
'./Option'
;
import
Option
from
'./
commponents/
Option'
;
import
'./index.less'
import
'./index.less'
...
...
src/pages/EventProcessing/UnCommon/Application.jsx
0 → 100644
View file @
434d112a
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
Document
from
'react-document-title'
import
{
WingBlank
,
WhiteSpace
,
ActionSheet
,
Toast
}
from
'antd-mobile'
import
axiosRequest
from
'../../../utils/request'
;
import
TopTabs
from
'../../../components/Tabs/BlankTabs'
import
Skeleton
from
'../../../components/Skeleton'
import
Basic
from
'../commponents/Basic'
import
Adjunct
from
'../commponents/Adjunct'
import
Flow
from
'../commponents/Flow'
;
import
Option
from
'../commponents/Option'
;
import
'../index.less'
const
Process
=
(
props
)
=>
{
const
{
uuid
,
FLOWTBID
}
=
props
.
match
.
params
;
const
[
templateId
,
setTemplateId
]
=
useState
();
const
[
tableId
,
setTableId
]
=
useState
();
const
[
nodeId
,
setNodeId
]
=
useState
();
// const [operateId, setOperateId] = useState();
const
[
flowTbId
,
setFlowTbId
]
=
useState
();
//回到顶部
useEffect
(()
=>
{
window
.
scrollTo
(
0
,
0
)
},
[]);
useEffect
(()
=>
{
const
{
id
}
=
props
.
match
.
params
;
setFlowTbId
(
FLOWTBID
);
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/dispatcher`
,
body
:
{
operateId
:
id
,
formType
:
'form'
,
uuid
,
mobileSign
:
1
}
}).
then
(
res
=>
{
const
keys
=
res
.
elementList
?
Object
.
keys
(
res
.
elementList
)
:
[];
console
.
log
(
keys
);
setBasic
(
res
.
elementList
?
res
.
elementList
.
map
(
item
=>
({
title
:
item
.
showName
}))
:
[]);
setTableId
(
res
.
table
&&
res
.
table
.
tableId
);
setTemplateId
(
res
.
property
&&
res
.
property
.
templateId
);
setNodeId
(
res
.
property
&&
res
.
property
.
curNodeId
);
// setOperateId(res.property && res.property.operateId);
});
},
[]);
//获取basic数据
const
[
basic
,
setBasic
]
=
useState
([]);
const
[
basicLoading
,
setBasicLoading
]
=
useState
(
false
)
const
getBasic
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getData`
,
body
:
{
uuid
,
tableId
,
templateId
}
}).
then
(
res
=>
{
setBasicLoading
(
true
)
const
result
=
[...
basic
];
result
.
map
(
item
=>
{
item
.
content
=
res
[
item
.
title
]
return
null
;
});
setBasic
(
result
)
});
}
//获取Flow数据
const
[
flowData
,
setFlowData
]
=
useState
([]);
const
[
flowLoading
,
setFlowLoading
]
=
useState
(
false
)
const
getFlow
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getFlowList`
,
body
:
{
uuid
,
tableId
}
}).
then
(
res
=>
{
setFlowLoading
(
true
)
setFlowData
(
res
)
});
};
const
[
adjunctData
,
setAdjunctData
]
=
useState
([]);
const
[
adjunctLoading
,
setAdjunctLoading
]
=
useState
(
false
)
const
getAdjunct
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getFiles`
,
body
:
{
uuid
,
fieldName
:
'fj'
,
tableId
}
}).
then
(
res
=>
{
setAdjunctLoading
(
true
)
setAdjunctData
(
res
)
});
};
const
[
button
,
setButton
]
=
useState
([])
const
getButton
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/nextNodeList`
,
body
:
{
curNodeId
:
nodeId
}
}).
then
(
res
=>
{
const
result
=
res
?
res
.
map
(
item
=>
({
button
:
item
.
name
,
target
:
item
.
special
,
nodetype
:
item
.
nodetype
}))
:
[]
setButton
(
result
)
});
};
useEffect
(()
=>
{
const
{
uuid
}
=
props
.
match
.
params
;
templateId
&&
tableId
&&
getBasic
(
uuid
)
templateId
&&
tableId
&&
getFlow
(
uuid
);
templateId
&&
tableId
&&
getAdjunct
(
uuid
)
getButton
()
},
[
nodeId
]);
//提交按钮状态
const
[
disabled
,
setDisabled
]
=
useState
(
true
);
//提交按钮文字
const
[
footButton
,
setFootButton
]
=
useState
(
'处理'
);
//聚焦
const
optionBlur
=
()
=>
{
setFootButton
(
'确认发送'
);
setFootStatus
(
true
)
};
useEffect
(()
=>
{
const
option
=
document
.
getElementsByClassName
(
"option-text"
)[
0
];
if
(
option
)
{
option
.
addEventListener
(
'focus'
,
optionBlur
,
true
);
return
()
=>
option
.
removeEventListener
(
'focus'
,
optionBlur
,
true
);
}
},
[
basic
]);
// const [blyj, setBlyj] = useState();
// console.log(blyj)
const
optionChange
=
val
=>
{
// setBlyj(val)
setDisabled
(
!
(
val
!=
null
&&
val
!==
''
))
};
const
[
current
,
setCurrent
]
=
useState
(
'basic'
);
const
[
footStatus
,
setFootStatus
]
=
useState
(
false
);
//点击输入框, 聚焦移动
const
textClick
=
()
=>
{
document
.
getElementsByClassName
(
"option-text"
)[
0
].
focus
();
window
.
scrollTo
(
0
,
document
.
body
.
scrollHeight
);
optionBlur
()
};
//tab切换
const
tabClick
=
(
name
)
=>
{
setCurrent
(
name
)
name
===
'option'
&&
document
.
getElementsByClassName
(
"option-text"
)[
0
].
focus
();
name
===
'option'
&&
optionBlur
()
const
top
=
document
.
getElementById
(
`event-
${
name
}
`
).
offsetTop
-
document
.
getElementById
(
`event-basic`
).
offsetTop
;
window
.
scrollTo
(
0
,
top
);
};
//antd-mobile 提交选项
const
isIPhone
=
new
RegExp
(
'
\\
biPhone
\\
b|
\\
biPod
\\
b'
,
'i'
).
test
(
window
.
navigator
.
userAgent
);
let
wrapProps
;
if
(
isIPhone
)
{
wrapProps
=
{
onTouchStart
:
e
=>
e
.
preventDefault
(),
};
};
const
showActionSheet
=
()
=>
{
const
BUTTON
=
[];
button
.
map
(
item
=>
BUTTON
.
push
(
item
.
button
));
const
BUTTONS
=
BUTTON
.
concat
([
'取消'
]);
ActionSheet
.
showActionSheetWithOptions
({
options
:
BUTTONS
,
cancelButtonIndex
:
BUTTONS
.
length
-
1
,
maskClosable
:
true
,
wrapProps
,
},
(
buttonIndex
)
=>
{
buttonIndex
<
BUTTONS
.
length
-
1
&&
subUrl
(
buttonIndex
)
// console.log(buttonIndex)
});
};
const
subUrl
=
key
=>
{
button
[
key
].
nodetype
===
'bakup'
?
end
()
:
props
.
history
.
push
(
`/blank/submit/
${
nodeId
}
/
${
uuid
}
/
${
flowTbId
?
flowTbId
:
'null'
}
`
)
};
const
end
=
()
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/application/interfaces/flow/saveWorkFlowModel.jsp`
,
body
:
{
flowNodeId
:
nodeId
,
attachId
:
uuid
,
flowTbId
:
flowTbId
===
'null'
?
''
:
flowTbId
,
userListMap
:
JSON
.
stringify
([{}])
}
}).
then
(
res
=>
{
if
(
res
.
success
===
'success'
)
{
Toast
.
success
(
"操作成功"
,
1
,
()
=>
{
props
.
history
.
push
(
'/bord/backlog'
)
});
}
});
};
const
resultLoading
=
basicLoading
&&
adjunctLoading
&&
flowLoading
;
return
(
<
Document
title=
"待办详情"
>
<
div
>
<
TopTabs
page=
{
current
}
onClick=
{
tabClick
}
/>
<
div
id=
"event"
>
<
WingBlank
>
<
div
id=
"event-basic"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Basic
data=
{
basic
}
/>
:
<
Skeleton
/>
}
<
div
id=
"event-adjunct"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Adjunct
data=
{
adjunctData
}
/>
:
<
Skeleton
/>
}
<
div
id=
"event-flow"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Flow
data=
{
flowData
}
/>
:
<
Skeleton
/>
}
<
div
id=
"event-option"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Option
onChange=
{
optionChange
}
/>
:
<
Skeleton
/>
}
</
WingBlank
>
</
div
>
<
div
className=
"event-footer"
>
{
resultLoading
&&
(
<
div
className=
{
`event-footer-button ${(footStatus && disabled) ? 'button-disabled' : '' }`
}
onClick=
{
footStatus
&&
!
disabled
?
showActionSheet
:
textClick
}
>
{
!
footStatus
&&
(
<
img
alt=
""
src=
"/img/process-edit.png"
className=
"process-edit"
/>
)
}
{
footButton
}
</
div
>
)
}
</
div
>
</
div
>
</
Document
>
);
};
export
default
Process
;
src/pages/EventProcessing/UnCommon/Meeting.jsx
0 → 100644
View file @
434d112a
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
Document
from
'react-document-title'
import
{
WingBlank
,
WhiteSpace
,
ActionSheet
,
Toast
}
from
'antd-mobile'
import
axiosRequest
from
'../../../utils/request'
;
import
TopTabs
from
'../../../components/Tabs/BlankTabs'
import
Skeleton
from
'../../../components/Skeleton'
import
Basic
from
'../commponents/Basic'
import
Adjunct
from
'../commponents/Adjunct'
import
Flow
from
'../commponents/Flow'
;
import
Option
from
'../commponents/Option'
;
import
'../index.less'
const
Process
=
(
props
)
=>
{
const
{
uuid
,
FLOWTBID
}
=
props
.
match
.
params
;
const
[
templateId
,
setTemplateId
]
=
useState
();
const
[
tableId
,
setTableId
]
=
useState
();
const
[
nodeId
,
setNodeId
]
=
useState
();
// const [operateId, setOperateId] = useState();
const
[
flowTbId
,
setFlowTbId
]
=
useState
();
//回到顶部
useEffect
(()
=>
{
window
.
scrollTo
(
0
,
0
)
},
[]);
useEffect
(()
=>
{
const
{
id
}
=
props
.
match
.
params
;
setFlowTbId
(
FLOWTBID
);
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/dispatcher`
,
body
:
{
operateId
:
id
,
formType
:
'form'
,
uuid
,
mobileSign
:
1
}
}).
then
(
res
=>
{
const
keys
=
res
.
elementList
?
Object
.
keys
(
res
.
elementList
)
:
[];
console
.
log
(
keys
);
setBasic
(
res
.
elementList
?
res
.
elementList
.
map
(
item
=>
({
title
:
item
.
showName
}))
:
[]);
setTableId
(
res
.
table
&&
res
.
table
.
tableId
);
setTemplateId
(
res
.
property
&&
res
.
property
.
templateId
);
setNodeId
(
res
.
property
&&
res
.
property
.
curNodeId
);
// setOperateId(res.property && res.property.operateId);
});
},
[]);
//获取basic数据
const
[
basic
,
setBasic
]
=
useState
([]);
const
[
basicLoading
,
setBasicLoading
]
=
useState
(
false
)
const
getBasic
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getData`
,
body
:
{
uuid
,
tableId
,
templateId
}
}).
then
(
res
=>
{
setBasicLoading
(
true
)
const
result
=
[...
basic
];
result
.
map
(
item
=>
{
item
.
content
=
res
[
item
.
title
]
return
null
;
});
setBasic
(
result
)
});
}
//获取Flow数据
const
[
flowData
,
setFlowData
]
=
useState
([]);
const
[
flowLoading
,
setFlowLoading
]
=
useState
(
false
)
const
getFlow
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getFlowList`
,
body
:
{
uuid
,
tableId
}
}).
then
(
res
=>
{
setFlowLoading
(
true
)
setFlowData
(
res
)
});
};
const
[
adjunctData
,
setAdjunctData
]
=
useState
([]);
const
[
adjunctLoading
,
setAdjunctLoading
]
=
useState
(
false
)
const
getAdjunct
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getFiles`
,
body
:
{
uuid
,
fieldName
:
'fj'
,
tableId
}
}).
then
(
res
=>
{
setAdjunctLoading
(
true
)
setAdjunctData
(
res
)
});
};
const
[
button
,
setButton
]
=
useState
([])
const
getButton
=
uuid
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/nextNodeList`
,
body
:
{
curNodeId
:
nodeId
}
}).
then
(
res
=>
{
const
result
=
res
?
res
.
map
(
item
=>
({
button
:
item
.
name
,
target
:
item
.
special
,
nodetype
:
item
.
nodetype
}))
:
[]
setButton
(
result
)
});
};
useEffect
(()
=>
{
const
{
uuid
}
=
props
.
match
.
params
;
templateId
&&
tableId
&&
getBasic
(
uuid
)
templateId
&&
tableId
&&
getFlow
(
uuid
);
templateId
&&
tableId
&&
getAdjunct
(
uuid
)
getButton
()
},
[
nodeId
]);
//提交按钮状态
const
[
disabled
,
setDisabled
]
=
useState
(
true
);
//提交按钮文字
const
[
footButton
,
setFootButton
]
=
useState
(
'处理'
);
//聚焦
const
optionBlur
=
()
=>
{
setFootButton
(
'确认发送'
);
setFootStatus
(
true
)
};
useEffect
(()
=>
{
const
option
=
document
.
getElementsByClassName
(
"option-text"
)[
0
];
if
(
option
)
{
option
.
addEventListener
(
'focus'
,
optionBlur
,
true
);
return
()
=>
option
.
removeEventListener
(
'focus'
,
optionBlur
,
true
);
}
},
[
basic
]);
// const [blyj, setBlyj] = useState();
// console.log(blyj)
const
optionChange
=
val
=>
{
// setBlyj(val)
setDisabled
(
!
(
val
!=
null
&&
val
!==
''
))
};
const
[
current
,
setCurrent
]
=
useState
(
'basic'
);
const
[
footStatus
,
setFootStatus
]
=
useState
(
false
);
//点击输入框, 聚焦移动
const
textClick
=
()
=>
{
document
.
getElementsByClassName
(
"option-text"
)[
0
].
focus
();
window
.
scrollTo
(
0
,
document
.
body
.
scrollHeight
);
optionBlur
()
};
//tab切换
const
tabClick
=
(
name
)
=>
{
setCurrent
(
name
)
name
===
'option'
&&
document
.
getElementsByClassName
(
"option-text"
)[
0
].
focus
();
name
===
'option'
&&
optionBlur
()
const
top
=
document
.
getElementById
(
`event-
${
name
}
`
).
offsetTop
-
document
.
getElementById
(
`event-basic`
).
offsetTop
;
window
.
scrollTo
(
0
,
top
);
};
//antd-mobile 提交选项
const
isIPhone
=
new
RegExp
(
'
\\
biPhone
\\
b|
\\
biPod
\\
b'
,
'i'
).
test
(
window
.
navigator
.
userAgent
);
let
wrapProps
;
if
(
isIPhone
)
{
wrapProps
=
{
onTouchStart
:
e
=>
e
.
preventDefault
(),
};
};
const
showActionSheet
=
()
=>
{
const
BUTTON
=
[];
button
.
map
(
item
=>
BUTTON
.
push
(
item
.
button
));
const
BUTTONS
=
BUTTON
.
concat
([
'取消'
]);
ActionSheet
.
showActionSheetWithOptions
({
options
:
BUTTONS
,
cancelButtonIndex
:
BUTTONS
.
length
-
1
,
maskClosable
:
true
,
wrapProps
,
},
(
buttonIndex
)
=>
{
buttonIndex
<
BUTTONS
.
length
-
1
&&
subUrl
(
buttonIndex
)
// console.log(buttonIndex)
});
};
const
subUrl
=
key
=>
{
button
[
key
].
nodetype
===
'bakup'
?
end
()
:
props
.
history
.
push
(
`/blank/submit/
${
nodeId
}
/
${
uuid
}
/
${
flowTbId
?
flowTbId
:
'null'
}
`
)
};
const
end
=
()
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/application/interfaces/flow/saveWorkFlowModel.jsp`
,
body
:
{
flowNodeId
:
nodeId
,
attachId
:
uuid
,
flowTbId
:
flowTbId
===
'null'
?
''
:
flowTbId
,
userListMap
:
JSON
.
stringify
([{}])
}
}).
then
(
res
=>
{
if
(
res
.
success
===
'success'
)
{
Toast
.
success
(
"操作成功"
,
1
,
()
=>
{
props
.
history
.
push
(
'/bord/backlog'
)
});
}
});
};
const
resultLoading
=
basicLoading
&&
adjunctLoading
&&
flowLoading
;
return
(
<
Document
title=
"待办详情"
>
<
div
>
<
TopTabs
page=
{
current
}
onClick=
{
tabClick
}
/>
<
div
id=
"event"
>
<
WingBlank
>
<
div
id=
"event-basic"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Basic
data=
{
basic
}
/>
:
<
Skeleton
/>
}
<
div
id=
"event-adjunct"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Adjunct
data=
{
adjunctData
}
/>
:
<
Skeleton
/>
}
<
div
id=
"event-flow"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Flow
data=
{
flowData
}
/>
:
<
Skeleton
/>
}
<
div
id=
"event-option"
/>
<
WhiteSpace
/>
{
resultLoading
?
<
Option
onChange=
{
optionChange
}
/>
:
<
Skeleton
/>
}
</
WingBlank
>
</
div
>
<
div
className=
"event-footer"
>
{
resultLoading
&&
(
<
div
className=
{
`event-footer-button ${(footStatus && disabled) ? 'button-disabled' : '' }`
}
onClick=
{
footStatus
&&
!
disabled
?
showActionSheet
:
textClick
}
>
{
!
footStatus
&&
(
<
img
alt=
""
src=
"/img/process-edit.png"
className=
"process-edit"
/>
)
}
{
footButton
}
</
div
>
)
}
</
div
>
</
div
>
</
Document
>
);
};
export
default
Process
;
src/pages/EventProcessing/UnCommon/People.jsx
0 → 100644
View file @
434d112a
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
Document
from
'react-document-title'
import
AddressList
from
'../commponents/Goods'
;
import
axiosRequest
from
'../../../utils/request'
;
import
Skeleton
from
'../../../components/Skeleton'
const
AddressBook
=
(
props
)
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
data
,
setData
]
=
useState
([]);
const
getData
=
()
=>
{
setLoading
(
true
);
axiosRequest
({
method
:
'post'
,
url
:
'/idtAppServiceV6/oApp/getDeptTree'
,
}).
then
(
res
=>
{
setLoading
(
false
);
setData
(
res
)
});
};
useEffect
(()
=>
{
getData
()
},
[]);
// const [userLoading, setUserLoading] = useState(false)
const
treeClick
=
(
DEPTID
)
=>
{
const
newData
=
[...
data
];
const
index
=
newData
.
findIndex
(
item
=>
item
.
DEPTID
===
DEPTID
);
const
checked
=
newData
[
index
].
checked
?
newData
[
index
]
:
false
;
newData
[
index
]
=
{...
newData
[
index
],
loading
:
true
,
children
:
[],
checked
:
!
checked
};
setData
(
newData
);
!
checked
&&
getUser
(
DEPTID
)
};
const
getUser
=
(
DEPTID
)
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getSearchAddressBook?deptId=
${
DEPTID
}
`
,
}).
then
(
res
=>
{
const
child
=
res
.
userList
&&
res
.
userList
.
length
>
0
?
res
.
userList
:
[];
const
newData
=
[...
data
];
const
index
=
newData
.
findIndex
(
item
=>
item
.
DEPTID
===
DEPTID
);
newData
[
index
]
=
{...
newData
[
index
],
loading
:
false
,
children
:
child
,
checked
:
true
};
setData
(
newData
)
// setData()
});
};
return
(
<
Document
title=
"参加人数"
>
<
div
>
<
div
className=
'adMainBox'
>
{
loading
?
<
Skeleton
/>
:
(<
AddressList
data=
{
data
}
onClick=
{
treeClick
}
/>)
}
</
div
>
</
div
>
</
Document
>
);
};
export
default
AddressBook
;
src/pages/EventProcessing/Adjunct.jsx
→
src/pages/EventProcessing/
commponents/
Adjunct.jsx
View file @
434d112a
import
React
from
'react'
;
import
React
from
'react'
;
import
List
from
'../../components/List'
import
List
from
'../../
../
components/List'
import
AdjunctList
from
'../../components/Adjunct'
import
AdjunctList
from
'../../
../
components/Adjunct'
const
Adjunct
=
(
props
)
=>
{
const
Adjunct
=
(
props
)
=>
{
...
...
src/pages/EventProcessing/commponents/Applicate.jsx
0 → 100644
View file @
434d112a
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
Document
from
'react-document-title'
import
AddressList
from
'../commponents/Goods'
;
import
axiosRequest
from
'../../../utils/request'
;
import
Skeleton
from
'../../../components/Skeleton'
const
AddressBook
=
(
props
)
=>
{
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
data
,
setData
]
=
useState
([]);
const
getData
=
()
=>
{
setLoading
(
true
);
axiosRequest
({
method
:
'post'
,
url
:
'/idtAppServiceV6/oApp/getDeptTree'
,
}).
then
(
res
=>
{
setLoading
(
false
);
setData
(
res
)
});
};
useEffect
(()
=>
{
getData
()
},
[]);
// const [userLoading, setUserLoading] = useState(false)
const
treeClick
=
(
DEPTID
)
=>
{
const
newData
=
[...
data
];
const
index
=
newData
.
findIndex
(
item
=>
item
.
DEPTID
===
DEPTID
);
const
checked
=
newData
[
index
].
checked
?
newData
[
index
]
:
false
;
newData
[
index
]
=
{...
newData
[
index
],
loading
:
true
,
children
:
[],
checked
:
!
checked
};
setData
(
newData
);
!
checked
&&
getUser
(
DEPTID
)
};
const
getUser
=
(
DEPTID
)
=>
{
axiosRequest
({
method
:
'post'
,
url
:
`/idtAppServiceV6/oApp/getSearchAddressBook?deptId=
${
DEPTID
}
`
,
}).
then
(
res
=>
{
const
child
=
res
.
userList
&&
res
.
userList
.
length
>
0
?
res
.
userList
:
[];
const
newData
=
[...
data
];
const
index
=
newData
.
findIndex
(
item
=>
item
.
DEPTID
===
DEPTID
);
newData
[
index
]
=
{...
newData
[
index
],
loading
:
false
,
children
:
child
,
checked
:
true
};
setData
(
newData
)
// setData()
});
};
return
(
<
Document
title=
"参加人数"
>
<
div
>
<
div
className=
'adMainBox'
>
{
loading
?
<
Skeleton
/>
:
(<
AddressList
data=
{
data
}
onClick=
{
treeClick
}
/>)
}
</
div
>
</
div
>
</
Document
>
);
};
export
default
AddressBook
;
src/pages/EventProcessing/Basic.jsx
→
src/pages/EventProcessing/
commponents/
Basic.jsx
View file @
434d112a
import
React
from
'react'
;
import
React
from
'react'
;
import
'./index.less'
import
'.
.
/index.less'
import
List
from
'../../components/List'
import
List
from
'../../
../
components/List'
const
Basic
=
(
props
)
=>
{
const
Basic
=
(
props
)
=>
{
const
{
data
}
=
props
const
{
data
}
=
props
...
...
src/pages/EventProcessing/Flow.jsx
→
src/pages/EventProcessing/
commponents/
Flow.jsx
View file @
434d112a
import
React
from
'react'
;
import
React
from
'react'
;
import
StepCard
from
'../../components/Card/StepCard'
import
StepCard
from
'../../
../
components/Card/StepCard'
const
Flow
=
(
props
)
=>
{
const
Flow
=
(
props
)
=>
{
const
{
data
}
=
props
const
{
data
}
=
props
...
...
src/pages/EventProcessing/commponents/Goods.jsx
0 → 100644
View file @
434d112a
import
React
from
'react'
;
import
'./index.less'
const
Index
=
(
props
)
=>
{
const
{
data
,
onClick
}
=
props
;
return
(
<
div
className=
"address-box"
>
{
data
&&
data
.
length
>
0
&&
data
.
map
((
item
,
index
)
=>
(
<
div
key=
{
index
}
>
<
div
className=
"address-item address-title"
onClick=
{
()
=>
onClick
(
item
.
DEPTID
)
}
>
{
item
.
NAME
||
''
}
<
img
src=
"/img/rarrow.png"
alt=
""
className=
{
`icon18 ${item.checked ? 'icon-checked' : 'icon-unchecked'}`
}
/>
</
div
>
{
item
.
checked
&&
(
<
div
className=
"address-item-box"
>
{
item
.
children
.
map
((
child
,
index2
)
=>
(
<
div
className=
"address-item"
key=
{
index2
}
>
111111
</
div
>
))
}
</
div
>
)
}
</
div
>
))
}
</
div
>
);
};
export
default
Index
;
src/pages/EventProcessing/Option.jsx
→
src/pages/EventProcessing/
commponents/
Option.jsx
View file @
434d112a
import
React
from
'react'
;
import
React
from
'react'
;
// import {Modal} from 'antd-mobile'
// import {Modal} from 'antd-mobile'
import
'./index.less'
;
import
'.
.
/index.less'
;
// const operation = Modal.operation;
// const operation = Modal.operation;
...
...
src/pages/EventProcessing/commponents/index.less
0 → 100644
View file @
434d112a
.address-item{
display: flex;
justify-content: space-between;
padding: 15px;
border-bottom: 1px solid rgba(239, 239, 239, 1);
background: #ffffff;
}
.address-box > .address-item:first-child{
border-radius: 6px 6px 0 0;
}
.address-box > .address-item:last-child{
border-radius: 0 0 6px 6px;
}
.sub-checkbox{
display: flex;
justify-content: space-between;
}
.address-phone{
color: rgba(0, 0, 0, 1) !important;
}
.sub-title{
padding: 10px;
border-bottom: 1px solid rgba(239, 239, 239, 1);
}
.address-loading{
background: #ffffff;
border-bottom: 1px solid rgba(239, 239, 239, 1);
}
.icon-unchecked{
transition: transform 350ms;
}
.icon-checked{
transform: rotate(90deg);
transition: transform 350ms;
}
.address-item-box .address-item{
padding: 15px 40px;
}
.address-empty{
display: flex;
justify-content: center;
padding: 15px;
border-bottom: 1px solid rgba(239, 239, 239, 1);
background: #ffffff;
}
.address-title{
font-weight: bold;
}
src/pages/EventProcessing/index.less
View file @
434d112a
...
@@ -114,3 +114,56 @@
...
@@ -114,3 +114,56 @@
.am-action-sheet-button-list-item .am-action-sheet-cancel-button{
.am-action-sheet-button-list-item .am-action-sheet-cancel-button{
color: red;
color: red;
}
}
.address-item{
display: flex;
justify-content: space-between;
padding: 15px;
border-bottom: 1px solid rgba(239, 239, 239, 1);
background: #ffffff;
}
.address-box > .address-item:first-child{
border-radius: 6px 6px 0 0;
}
.address-box > .address-item:last-child{
border-radius: 0 0 6px 6px;
}
.sub-checkbox{
display: flex;
justify-content: space-between;
}
.address-phone{
color: rgba(0, 0, 0, 1) !important;
}
.sub-title{
padding: 10px;
border-bottom: 1px solid rgba(239, 239, 239, 1);
}
.address-loading{
background: #ffffff;
border-bottom: 1px solid rgba(239, 239, 239, 1);
}
.icon-unchecked{
transition: transform 350ms;
}
.icon-checked{
transform: rotate(90deg);
transition: transform 350ms;
}
.address-item-box .address-item{
padding: 15px 40px;
}
.address-empty{
display: flex;
justify-content: center;
padding: 15px;
border-bottom: 1px solid rgba(239, 239, 239, 1);
background: #ffffff;
}
.address-title{
font-weight: bold;
}
src/pages/UnCommon/Mail/Info.jsx
View file @
434d112a
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
React
from
'react'
;
import
{
WingBlank
,
List
,
InputItem
,
TextareaItem
}
from
'antd-mobile'
import
{
WingBlank
,
List
,
InputItem
,
TextareaItem
,
WhiteSpace
}
from
'antd-mobile'
import
'react-calendar/dist/Calendar.css'
;
import
'react-calendar/dist/Calendar.css'
;
import
Document
from
'react-document-title'
import
Document
from
'react-document-title'
import
'../index.less'
import
'../index.less'
import
{
createForm
}
from
'rc-form'
;
const
Send
=
(
props
)
=>
{
const
Send
=
(
props
)
=>
{
const
{
getFieldProps
}
=
props
.
form
;
const
onSubmit
=
()
=>
{
props
.
form
.
validateFields
({
force
:
true
},
(
error
)
=>
{
if
(
!
error
)
{
console
.
log
(
props
.
form
.
getFieldsValue
());
}
else
{
alert
(
'Validation failed'
);
}
});
};
return
(
return
(
<
Document
title=
"内部邮局"
>
<
Document
title=
"内部邮局"
>
<
WingBlank
>
<
WingBlank
>
<
form
>
<
WhiteSpace
/>
<
List
>
<
List
>
<
InputItem
<
InputItem
value=
{
`1111`
}
>
主题
</
InputItem
>
{
...
getFieldProps
('
title
')}
<
InputItem
value=
{
`1111`
}
>
收件人
</
InputItem
>
placeholder=
"请输入主题"
<
TextareaItem
>
主题
</
InputItem
>
title=
"内容"
<
InputItem
value=
{
'11111111111111111111111111111111'
}
{
...
getFieldProps
('
title2
')}
rows=
{
4
}
placeholder=
"请输入收件人"
/>
>
收件人
</
InputItem
>
</
List
>
<
TextareaItem
title=
"内容"
placeholder=
"请输内容"
{
...
getFieldProps
('
title3
')}
rows=
{
4
}
/>
<
List
.
Item
>
<
input
type=
"file"
/>
</
List
.
Item
>
</
List
>
</
form
>
<
div
className=
"event-footer"
>
<
div
className=
"event-footer-button"
onClick=
{
onSubmit
}
>
发送
</
div
>
</
div
>
</
WingBlank
>
</
WingBlank
>
</
Document
>
</
Document
>
);
);
};
};
export
default
createForm
()(
Send
)
;
export
default
Send
;
src/pages/UnCommon/Mail/Send.jsx
View file @
434d112a
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
React
,
{
useState
}
from
'react'
;
import
{
WingBlank
,
List
,
InputItem
,
TextareaItem
}
from
'antd-mobile'
import
{
WingBlank
,
List
,
InputItem
,
TextareaItem
,
WhiteSpace
}
from
'antd-mobile'
import
'react-calendar/dist/Calendar.css'
;
import
'react-calendar/dist/Calendar.css'
;
import
Document
from
'react-document-title'
;
import
Document
from
'react-document-title'
import
'../index.less'
;
import
'../index.less'
import
axiosRequest
from
'../../../utils/request'
;
import
{
createForm
}
from
'rc-form'
;
import
{
createForm
}
from
'rc-form'
;
...
@@ -11,12 +11,21 @@ import { createForm } from 'rc-form';
...
@@ -11,12 +11,21 @@ import { createForm } from 'rc-form';
const
Send
=
(
props
)
=>
{
const
Send
=
(
props
)
=>
{
const
{
getFieldProps
}
=
props
.
form
;
const
{
getFieldProps
}
=
props
.
form
;
const
[
loading
,
setLoading
]
=
useState
(
false
)
const
onSubmit
=
()
=>
{
const
onSubmit
=
()
=>
{
props
.
form
.
validateFields
({
force
:
true
},
(
error
)
=>
{
props
.
form
.
validateFields
({
force
:
true
},
(
error
)
=>
{
const
values
=
props
.
form
.
getFieldsValue
();
setLoading
(
true
);
if
(
!
error
)
{
if
(
!
error
)
{
console
.
log
(
props
.
form
.
getFieldsValue
());
axiosRequest
({
}
else
{
method
:
'post'
,
alert
(
'Validation failed'
);
url
:
'/idtAppServiceV6/oApp/getGridDataList'
,
body
:
values
,
}).
then
(
res
=>
{
setLoading
(
true
)
});
console
.
log
(
loading
);
}
}
});
});
};
};
...
@@ -24,6 +33,7 @@ const Send = (props) => {
...
@@ -24,6 +33,7 @@ const Send = (props) => {
return
(
return
(
<
Document
title=
"内部邮局"
>
<
Document
title=
"内部邮局"
>
<
WingBlank
>
<
WingBlank
>
<
WhiteSpace
/>
<
form
>
<
form
>
<
List
>
<
List
>
<
InputItem
<
InputItem
...
@@ -40,9 +50,9 @@ const Send = (props) => {
...
@@ -40,9 +50,9 @@ const Send = (props) => {
{
...
getFieldProps
('
title3
')}
{
...
getFieldProps
('
title3
')}
rows=
{
4
}
rows=
{
4
}
/>
/>
<
List
.
Item
>
{
/*<List.Item>*/
}
<
input
type=
"file"
/>
{
/*<input type="file"/>*/
}
</
List
.
Item
>
{
/*</List.Item>*/
}
</
List
>
</
List
>
</
form
>
</
form
>
<
div
className=
"event-footer"
>
<
div
className=
"event-footer"
>
...
...
src/router.js
View file @
434d112a
...
@@ -16,6 +16,7 @@ import Date from './pages/UnCommon/Date'
...
@@ -16,6 +16,7 @@ import Date from './pages/UnCommon/Date'
import
Mail
from
'./pages/UnCommon/Mail'
import
Mail
from
'./pages/UnCommon/Mail'
import
MainInfo
from
'./pages/UnCommon/Mail/Info'
import
MainInfo
from
'./pages/UnCommon/Mail/Info'
import
MainSend
from
'./pages/UnCommon/Mail/Send'
import
MainSend
from
'./pages/UnCommon/Mail/Send'
import
People
from
'./pages/EventProcessing/UnCommon/People'
import
Login
from
'./pages/Login'
import
Login
from
'./pages/Login'
import
NoFound
from
'./pages/NoFound'
import
NoFound
from
'./pages/NoFound'
...
@@ -43,6 +44,8 @@ const ReactRouter = () => {
...
@@ -43,6 +44,8 @@ const ReactRouter = () => {
<
Route
path
=
"/blank/mail"
component
=
{
Mail
}
/
>
<
Route
path
=
"/blank/mail"
component
=
{
Mail
}
/
>
<
Route
path
=
"/blank/mail-info"
component
=
{
MainInfo
}
/
>
<
Route
path
=
"/blank/mail-info"
component
=
{
MainInfo
}
/
>
<
Route
path
=
"/blank/mail-send"
component
=
{
MainSend
}
/
>
<
Route
path
=
"/blank/mail-send"
component
=
{
MainSend
}
/
>
<
Route
path
=
"/blank/people"
component
=
{
People
}
/
>
<
Route
path
=
"/blank/work/:type/:name"
component
=
{
WorkDetail
}
/
>
<
Route
path
=
"/blank/work/:type/:name"
component
=
{
WorkDetail
}
/
>
<
Route
path
=
"/blank/submit/:flowNodeId/:uuid/:flowTbId"
component
=
{
SubmitDetail
}
/
>
<
Route
path
=
"/blank/submit/:flowNodeId/:uuid/:flowTbId"
component
=
{
SubmitDetail
}
/
>
<
Route
path
=
"/blank/info/:id/:uuid/:FLOWTBID"
component
=
{
Process
}
/
>
<
Route
path
=
"/blank/info/:id/:uuid/:FLOWTBID"
component
=
{
Process
}
/
>
...
...
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