Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
agcs2.0-web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
liang
agcs2.0-web
Commits
4c2704fb
Commit
4c2704fb
authored
Jun 12, 2023
by
miaojiale
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加审核按钮,审核权限
parent
2c544c6e
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
282 additions
and
186 deletions
+282
-186
index.vue
src/components/TabComponents/index.vue
+4
-0
index.vue
src/views/audit-detail/index.vue
+28
-5
index.vue
src/views/audit-qualitycontrol/index.vue
+15
-1
index.vue
src/views/screening/index.vue
+235
-180
No files found.
src/components/TabComponents/index.vue
View file @
4c2704fb
...
@@ -795,6 +795,7 @@ export default {
...
@@ -795,6 +795,7 @@ export default {
},
},
...
mapGetters
({
...
mapGetters
({
fontSize
:
"
table/fontSize
"
,
fontSize
:
"
table/fontSize
"
,
roles
:
"
user/roles
"
,
}),
}),
},
},
methods
:
{
methods
:
{
...
@@ -864,6 +865,9 @@ export default {
...
@@ -864,6 +865,9 @@ export default {
remoteMethod
(
val
)
{
remoteMethod
(
val
)
{
this
.
$emit
(
"
remoteMethod
"
,
val
)
this
.
$emit
(
"
remoteMethod
"
,
val
)
},
},
clearSort
()
{
this
.
$refs
.
selftab
.
clearSort
()
},
},
},
}
}
</
script
>
</
script
>
...
...
src/views/audit-detail/index.vue
View file @
4c2704fb
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<span
v-if=
"!isEmpty"
>
当前审核
</span>
<span
v-if=
"!isEmpty"
>
当前审核
</span>
<span
v-if=
"!isEmpty"
class=
"f-b"
<span
v-if=
"!isEmpty"
class=
"f-b"
>
【
{{
curUnion
}}
】
<span
v-if=
"!editStatus"
>
【
{{
curUnion
}}
】
<span
v-if=
"!editStatus"
>
【剩余
{{
auditNum
}}
】
</span
>
<span
v-if=
"!inPatientId"
>
【剩余
{{
auditNum
}}
】
</span>
</span
></span
></span
>
>
</div>
</div>
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
v-if=
"patientId && !isEmpty && !editStatus"
v-if=
"patientId && !isEmpty && !editStatus"
>
修改
</el-button
>
修改
</el-button
>
>
<el-button
class=
"btn"
@
click=
"
$router.go(-1)
"
>
返回
</el-button>
<el-button
class=
"btn"
@
click=
"
backEvents
"
>
返回
</el-button>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -164,6 +164,8 @@
...
@@ -164,6 +164,8 @@
? curBtn == 1
? curBtn == 1
? "好的"
? "好的"
: "提交"
: "提交"
: inPatientId
? "确认并返回"
: "确认并进入下一例审核"
: "确认并进入下一例审核"
}}
</el-button>
}}
</el-button>
</div>
</div>
...
@@ -232,6 +234,8 @@
...
@@ -232,6 +234,8 @@
?
curBtn
==
1
?
curBtn
==
1
?
"
好的
"
?
"
好的
"
:
"
提交
"
:
"
提交
"
:
inPatientId
?
"
确认并返回
"
:
"
确认并进入下一例审核
"
:
"
确认并进入下一例审核
"
}}
</el-button>
}}
</el-button>
</div>
</div>
...
@@ -300,6 +304,11 @@ export default {
...
@@ -300,6 +304,11 @@ export default {
confirmStatus
:
false
,
confirmStatus
:
false
,
}
}
},
},
props
:
{
formId
:
String
,
inPatientId
:
String
,
inUnionName
:
String
,
},
computed
:
{
computed
:
{
showClose
()
{
showClose
()
{
return
this
.
curBtn
==
1
?
false
:
true
return
this
.
curBtn
==
1
?
false
:
true
...
@@ -310,7 +319,11 @@ export default {
...
@@ -310,7 +319,11 @@ export default {
mounted
()
{
mounted
()
{
let
unionId
=
this
.
$route
.
query
.
unionId
let
unionId
=
this
.
$route
.
query
.
unionId
let
patientId
=
this
.
$route
.
query
.
patientId
let
patientId
=
this
.
$route
.
query
.
patientId
if
(
unionId
&&
!
patientId
)
{
if
(
this
.
inPatientId
)
{
// 组件使用
this
.
patientId
=
this
.
inPatientId
this
.
curUnion
=
this
.
inUnionName
}
else
if
(
unionId
&&
!
patientId
)
{
this
.
editStatus
=
false
this
.
editStatus
=
false
this
.
getUser
(
unionId
)
this
.
getUser
(
unionId
)
}
else
if
(
patientId
)
{
}
else
if
(
patientId
)
{
...
@@ -324,6 +337,13 @@ export default {
...
@@ -324,6 +337,13 @@ export default {
// this.$refs.publicDialog.dialogVisible = true
// this.$refs.publicDialog.dialogVisible = true
},
},
methods
:
{
methods
:
{
backEvents
()
{
if
(
this
.
inPatientId
)
{
this
.
$emit
(
"
changeIsAudit
"
)
}
else
{
this
.
$router
.
go
(
-
1
)
}
},
refresh
()
{
refresh
()
{
this
.
$refs
[
"
screen
"
].
getPatientDetail
()
this
.
$refs
[
"
screen
"
].
getPatientDetail
()
},
},
...
@@ -462,7 +482,7 @@ export default {
...
@@ -462,7 +482,7 @@ export default {
}
}
}
}
},
},
//
不合格
提交
// 提交
onSubmit
()
{
onSubmit
()
{
this
.
loading
=
true
this
.
loading
=
true
// 切换文本
// 切换文本
...
@@ -530,7 +550,10 @@ export default {
...
@@ -530,7 +550,10 @@ export default {
nextExample
()
{
nextExample
()
{
// !
// !
this
.
$store
.
commit
(
"
user/setGetMessageFlag
"
,
true
)
this
.
$store
.
commit
(
"
user/setGetMessageFlag
"
,
true
)
if
(
this
.
editStatus
)
{
if
(
this
.
inPatientId
)
{
this
.
onCancel
()
this
.
$emit
(
"
submitAudit
"
)
}
else
if
(
this
.
editStatus
)
{
this
.
loading
=
false
this
.
loading
=
false
this
.
onCancel
()
this
.
onCancel
()
}
else
{
}
else
{
...
...
src/views/audit-qualitycontrol/index.vue
View file @
4c2704fb
...
@@ -30,6 +30,7 @@
...
@@ -30,6 +30,7 @@
:page-size=
"pageSize"
:page-size=
"pageSize"
@
pageSizeChange=
"handleSizeChange"
@
pageSizeChange=
"handleSizeChange"
@
currentPageChange=
"handleCurrentChange"
@
currentPageChange=
"handleCurrentChange"
:sortChange=
"handleSort"
:showSummary=
"auditStatus === '0'"
:showSummary=
"auditStatus === '0'"
:getSummaries=
"getSummaries"
:getSummaries=
"getSummaries"
/>
/>
...
@@ -101,6 +102,7 @@ export default {
...
@@ -101,6 +102,7 @@ export default {
label
:
"
待审核(例)备份
"
,
label
:
"
待审核(例)备份
"
,
minWidth
:
120
,
minWidth
:
120
,
value
:
"
unCheckNums
"
,
value
:
"
unCheckNums
"
,
// sortable: "custom",
},
},
{
{
label
:
"
最新上报时间
"
,
label
:
"
最新上报时间
"
,
...
@@ -213,6 +215,13 @@ export default {
...
@@ -213,6 +215,13 @@ export default {
this
.
handleClick
()
this
.
handleClick
()
},
},
methods
:
{
methods
:
{
handleSort
(
val
)
{
console
.
log
(
val
)
const
{
prop
,
order
}
=
val
this
.
pageIndex
=
1
this
.
handleSearch
({
unCheckNums
:
order
})
// order "descending" prop "unCheckNums"
},
getSummaries
()
{
getSummaries
()
{
return
[
return
[
"
总计
"
,
"
总计
"
,
...
@@ -229,6 +238,7 @@ export default {
...
@@ -229,6 +238,7 @@ export default {
}
}
this
.
pageIndex
=
1
this
.
pageIndex
=
1
this
.
handleSearch
()
this
.
handleSearch
()
this
.
$refs
.
table
.
clearSort
()
},
},
auditHandle
(
data
,
i
)
{
auditHandle
(
data
,
i
)
{
if
(
this
.
type
==
"
1
"
)
{
if
(
this
.
type
==
"
1
"
)
{
...
@@ -271,12 +281,16 @@ export default {
...
@@ -271,12 +281,16 @@ export default {
}
}
}
}
},
},
async
handleSearch
()
{
async
handleSearch
(
obj
)
{
this
.
listLoading
=
true
this
.
listLoading
=
true
let
params
=
{
let
params
=
{
pageSize
:
this
.
pageSize
,
pageSize
:
this
.
pageSize
,
pageNum
:
this
.
pageIndex
,
pageNum
:
this
.
pageIndex
,
...
obj
,
}
}
// if (this.type==0) {
// }
let
res
let
res
switch
(
this
.
auditStatus
)
{
switch
(
this
.
auditStatus
)
{
case
"
0
"
:
case
"
0
"
:
...
...
src/views/screening/index.vue
View file @
4c2704fb
<
template
>
<
template
>
<div
class=
"container"
>
<div
class=
"container"
>
<div
v-show=
"!isDetail"
>
<div
v-show=
"!isDetail
&& !isAudit
"
>
<direct-search
<direct-search
ref=
"form"
ref=
"form"
:label-position=
"'right'"
:label-position=
"'right'"
...
@@ -39,6 +39,14 @@
...
@@ -39,6 +39,14 @@
@
addMethods=
"addMethods"
@
addMethods=
"addMethods"
></ConfigForms>
></ConfigForms>
</div>
</div>
<audit
v-if=
"isAudit"
:form-id=
"curAuditDetail.formId"
:in-patient-id=
"curAuditDetail.patientId"
:inUnionName=
"curAuditDetail.unionName"
@
changeIsAudit=
"changeIsAudit"
@
submitAudit=
"submitAudit"
></audit>
</div>
</div>
</
template
>
</
template
>
...
@@ -46,13 +54,26 @@
...
@@ -46,13 +54,26 @@
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
paginationMixin
from
"
@/components/TabComponents/mixin
"
import
{
getPatientPage
,
deletePatient
}
from
"
@/api/patient.js
"
import
{
getPatientPage
,
deletePatient
}
from
"
@/api/patient.js
"
import
ConfigForms
from
"
./components/ConfigForms.vue
"
import
ConfigForms
from
"
./components/ConfigForms.vue
"
import
audit
from
"
@/views/audit-detail/index.vue
"
import
{
mapGetters
}
from
"
vuex
"
import
{
mapGetters
}
from
"
vuex
"
export
default
{
export
default
{
name
:
"
ScreeningIndex
"
,
name
:
"
ScreeningIndex
"
,
components
:
{
ConfigForms
},
components
:
{
ConfigForms
,
audit
},
mixins
:
[
paginationMixin
],
mixins
:
[
paginationMixin
],
computed
:
{
...
mapGetters
({
selectedIndex
:
"
table/selectedIndex
"
,
refreshFlag
:
"
table/refreshFlag
"
,
roles
:
"
user/roles
"
,
}),
initCheckStatus
()
{
return
this
.
$route
.
query
.
checkStatus
},
},
data
()
{
data
()
{
return
{
return
{
isAudit
:
false
,
//控制审核详情
curAuditDetail
:
{},
isDetail
:
false
,
//! 控制详情显隐
isDetail
:
false
,
//! 控制详情显隐
listLoading
:
false
,
listLoading
:
false
,
disabled
:
false
,
disabled
:
false
,
...
@@ -117,175 +138,7 @@ export default {
...
@@ -117,175 +138,7 @@ export default {
value
:
"
查询
"
,
value
:
"
查询
"
,
},
},
],
],
columns
:
[
columns
:
[],
{
label
:
"
医联体
"
,
minWidth
:
120
,
value
:
"
unionName
"
,
formatter
:
(
row
)
=>
{
return
row
.
unionName
?
row
.
unionName
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
姓名
"
,
minWidth
:
120
,
formatter
:
(
row
)
=>
{
return
row
.
name
?
row
.
name
:
"
--
"
},
value
:
"
name
"
,
sortable
:
"
custom
"
,
},
{
label
:
"
性别
"
,
minWidth
:
80
,
value
:
"
sex
"
,
formatter
:
(
row
)
=>
{
return
row
.
sex
?
this
.
$handle
.
formatDicList
(
this
.
dictMap
[
"
d-sex
"
],
row
.
sex
+
""
)
:
"
--
"
},
sortable
:
"
custom
"
,
},
// {
// label: "身份证",
// minWidth: 120,
// value: "idCard",
// formatter: (row) => {
// return row.idCard ? row.idCard : "--"
// },
// },
{
label
:
"
年龄
"
,
minWidth
:
120
,
value
:
"
age
"
,
formatter
:
(
row
)
=>
{
return
row
.
age
?
row
.
age
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
筛查时间
"
,
minWidth
:
180
,
value
:
"
createTime
"
,
formatter
:
(
row
)
=>
{
return
row
.
createTime
?
row
.
createTime
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
风险评估结果
"
,
minWidth
:
120
,
value
:
"
riskRank
"
,
formatter
:
(
row
)
=>
{
let
riskRank
=
{
low
:
"
低危
"
,
medium
:
"
中危
"
,
high
:
"
高危
"
,
}
return
row
.
riskRank
?
riskRank
[
row
.
riskRank
]
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
是否内镜
"
,
minWidth
:
120
,
value
:
"
isInnerCheck
"
,
sortable
:
"
custom
"
,
formatter
:
(
row
)
=>
{
let
arr
=
[
{
label
:
"
否
"
,
value
:
"
0
"
},
{
label
:
"
是
"
,
value
:
"
1
"
},
]
let
label
if
(
String
(
row
.
isInnerCheck
))
{
label
=
arr
.
filter
((
e
)
=>
e
.
value
==
row
.
isInnerCheck
)[
0
].
label
}
else
{
label
=
"
--
"
}
return
label
},
},
{
label
:
"
筛查审核状态
"
,
minWidth
:
120
,
value
:
"
checkStatus
"
,
formatter
:
(
row
)
=>
{
let
arr
=
[
{
label
:
"
待审核
"
,
value
:
"
1
"
},
{
label
:
"
驳回修改
"
,
value
:
"
2
"
},
{
label
:
"
合格
"
,
value
:
"
3
"
},
{
label
:
"
不合格
"
,
value
:
"
4
"
},
]
let
label
if
(
row
.
checkStatus
)
{
label
=
arr
.
filter
((
e
)
=>
e
.
value
==
row
.
checkStatus
)[
0
].
label
}
else
{
label
=
"
--
"
}
return
label
},
sortable
:
"
custom
"
,
},
{
label
:
"
操作
"
,
width
:
180
,
fixed
:
"
right
"
,
operType
:
"
button
"
,
operations
:
[
{
func
:
this
.
handleView
,
formatter
(
row
)
{
if
(
row
.
checkStatus
!=
2
)
{
return
{
label
:
"
查看
"
,
type
:
"
text
"
,
}
}
else
{
return
{
label
:
""
,
type
:
"
none
"
,
style
:
{
display
:
"
none
"
,
},
}
}
},
},
{
func
:
this
.
handleAdd
,
formatter
(
row
)
{
if
(
row
.
checkStatus
!=
3
&&
row
.
checkStatus
!=
4
)
{
return
{
label
:
"
修改
"
,
type
:
"
text
"
,
}
}
else
{
return
{
label
:
""
,
type
:
"
none
"
,
style
:
{
display
:
"
none
"
,
},
}
}
},
},
{
func
:
this
.
deletePatient
,
formatter
(
row
)
{
return
{
label
:
"
删除
"
,
type
:
"
text
"
,
}
},
style
:
{
color
:
"
#FA6400
"
,
},
},
],
},
],
searchForm
:
{},
searchForm
:
{},
initForm
:
{},
initForm
:
{},
}
}
...
@@ -330,6 +183,22 @@ export default {
...
@@ -330,6 +183,22 @@ export default {
checkStatus
===
2
?
"
驳回修改
"
:
checkStatus
===
4
?
"
不合格
"
:
""
checkStatus
===
2
?
"
驳回修改
"
:
checkStatus
===
4
?
"
不合格
"
:
""
this
.
note
=
status
?
status
+
"
:
"
+
checkNote
:
""
this
.
note
=
status
?
status
+
"
:
"
+
checkNote
:
""
},
},
changeIsAudit
()
{
this
.
isAudit
=
false
this
.
curAuditDetail
=
{}
},
handleAudit
(
row
)
{
console
.
log
(
row
)
this
.
curAuditDetail
=
row
this
.
isAudit
=
true
},
submitAudit
()
{
this
.
isAudit
=
false
if
(
this
.
tableData
.
length
==
1
&&
this
.
pageIndex
!=
1
)
{
this
.
pageIndex
--
}
this
.
handleSearch
(
this
.
searchForm
)
},
deletePatient
(
row
)
{
deletePatient
(
row
)
{
this
.
$confirm
(
`是否删除【
${
row
.
name
}
】?`
,
"
提示
"
,
{
this
.
$confirm
(
`是否删除【
${
row
.
name
}
】?`
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
confirmButtonText
:
"
确定
"
,
...
@@ -395,15 +264,7 @@ export default {
...
@@ -395,15 +264,7 @@ export default {
})
})
},
},
},
},
computed
:
{
...
mapGetters
({
selectedIndex
:
"
table/selectedIndex
"
,
refreshFlag
:
"
table/refreshFlag
"
,
}),
initCheckStatus
()
{
return
this
.
$route
.
query
.
checkStatus
},
},
watch
:
{
watch
:
{
selectedIndex
(
v
)
{
selectedIndex
(
v
)
{
this
.
handleFormSearch
(
this
.
searchForm
)
this
.
handleFormSearch
(
this
.
searchForm
)
...
@@ -459,7 +320,201 @@ export default {
...
@@ -459,7 +320,201 @@ export default {
}
}
},
},
mounted
()
{
mounted
()
{
let
roleList
=
this
.
roles
.
map
((
e
)
=>
e
.
roleCode
)
// console.log(this.$route.query.checkStatus)
// console.log(this.$route.query.checkStatus)
this
.
columns
=
[
{
label
:
"
医联体
"
,
minWidth
:
120
,
value
:
"
unionName
"
,
formatter
:
(
row
)
=>
{
return
row
.
unionName
?
row
.
unionName
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
姓名
"
,
minWidth
:
120
,
formatter
:
(
row
)
=>
{
return
row
.
name
?
row
.
name
:
"
--
"
},
value
:
"
name
"
,
sortable
:
"
custom
"
,
},
{
label
:
"
性别
"
,
minWidth
:
80
,
value
:
"
sex
"
,
formatter
:
(
row
)
=>
{
return
row
.
sex
?
this
.
$handle
.
formatDicList
(
this
.
dictMap
[
"
d-sex
"
],
row
.
sex
+
""
)
:
"
--
"
},
sortable
:
"
custom
"
,
},
// {
// label: "身份证",
// minWidth: 120,
// value: "idCard",
// formatter: (row) => {
// return row.idCard ? row.idCard : "--"
// },
// },
{
label
:
"
年龄
"
,
minWidth
:
120
,
value
:
"
age
"
,
formatter
:
(
row
)
=>
{
return
row
.
age
?
row
.
age
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
筛查时间
"
,
minWidth
:
180
,
value
:
"
createTime
"
,
formatter
:
(
row
)
=>
{
return
row
.
createTime
?
row
.
createTime
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
风险评估结果
"
,
minWidth
:
120
,
value
:
"
riskRank
"
,
formatter
:
(
row
)
=>
{
let
riskRank
=
{
low
:
"
低危
"
,
medium
:
"
中危
"
,
high
:
"
高危
"
,
}
return
row
.
riskRank
?
riskRank
[
row
.
riskRank
]
:
"
--
"
},
sortable
:
"
custom
"
,
},
{
label
:
"
是否内镜
"
,
minWidth
:
120
,
value
:
"
isInnerCheck
"
,
sortable
:
"
custom
"
,
formatter
:
(
row
)
=>
{
let
arr
=
[
{
label
:
"
否
"
,
value
:
"
0
"
},
{
label
:
"
是
"
,
value
:
"
1
"
},
]
let
label
if
(
String
(
row
.
isInnerCheck
))
{
label
=
arr
.
filter
((
e
)
=>
e
.
value
==
row
.
isInnerCheck
)[
0
].
label
}
else
{
label
=
"
--
"
}
return
label
},
},
{
label
:
"
筛查审核状态
"
,
minWidth
:
120
,
value
:
"
checkStatus
"
,
formatter
:
(
row
)
=>
{
let
arr
=
[
{
label
:
"
待审核
"
,
value
:
"
1
"
},
{
label
:
"
驳回修改
"
,
value
:
"
2
"
},
{
label
:
"
合格
"
,
value
:
"
3
"
},
{
label
:
"
不合格
"
,
value
:
"
4
"
},
]
let
label
if
(
row
.
checkStatus
)
{
label
=
arr
.
filter
((
e
)
=>
e
.
value
==
row
.
checkStatus
)[
0
].
label
}
else
{
label
=
"
--
"
}
return
label
},
sortable
:
"
custom
"
,
},
{
label
:
"
操作
"
,
width
:
180
,
fixed
:
"
right
"
,
operType
:
"
button
"
,
operations
:
[
{
func
:
this
.
handleView
,
formatter
(
row
)
{
if
(
row
.
checkStatus
!=
2
)
{
return
{
label
:
"
查看
"
,
type
:
"
text
"
,
}
}
else
{
return
{
label
:
""
,
type
:
"
none
"
,
style
:
{
display
:
"
none
"
,
},
}
}
},
},
{
func
:
this
.
handleAdd
,
formatter
(
row
)
{
if
(
row
.
checkStatus
!=
3
&&
row
.
checkStatus
!=
4
)
{
return
{
label
:
"
修改
"
,
type
:
"
text
"
,
}
}
else
{
return
{
label
:
""
,
type
:
"
none
"
,
style
:
{
display
:
"
none
"
,
},
}
}
},
},
{
func
:
this
.
handleAudit
,
isHidden
()
{
return
!
(
roleList
.
includes
(
"
admin
"
)
||
roleList
.
includes
(
"
auditer
"
)
)
},
formatter
(
row
)
{
if
(
row
.
checkStatus
==
1
)
{
return
{
label
:
"
审核
"
,
type
:
"
text
"
,
}
}
else
{
return
{
label
:
""
,
type
:
"
none
"
,
style
:
{
display
:
"
none
"
,
},
}
}
},
},
{
func
:
this
.
deletePatient
,
formatter
(
row
)
{
return
{
label
:
"
删除
"
,
type
:
"
text
"
,
}
},
style
:
{
color
:
"
#FA6400
"
,
},
},
],
},
]
},
},
}
}
</
script
>
</
script
>
...
...
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