Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
op-web-service
Project
Project
Details
Activity
Releases
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
bp
op-web-service
Commits
b4b18033
Commit
b4b18033
authored
Aug 26, 2021
by
liwenhong
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://git.yidian-inc.com:8021/bp/op-web-service
into lwh/goods-add-time
parents
d1f81833
6c270262
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
367 additions
and
189 deletions
+367
-189
withdrawal.js
server/controllers/withdrawal.js
+21
-0
router.js
server/router.js
+2
-0
index.vue
src/pages/Groupmeal/newOrderManagement/index.vue
+4
-4
index.less
src/pages/Groupmeal/orderManagement/index.less
+4
-0
index.vue
src/pages/Groupmeal/orderManagement/index.vue
+1
-1
h5.vue
src/pages/Withdrawal/Examine/h5.vue
+80
-73
index.less
src/pages/Withdrawal/Examine/index.less
+12
-3
index.vue
src/pages/Withdrawal/Examine/index.vue
+176
-53
withdrawDetail.vue
src/pages/Withdrawal/Examine/withdrawDetail.vue
+57
-55
withdrawal.js
src/service/Withdrawal/withdrawal.js
+10
-0
No files found.
server/controllers/withdrawal.js
View file @
b4b18033
...
@@ -114,6 +114,27 @@ exports.getReblackList = async ctx => {
...
@@ -114,6 +114,27 @@ exports.getReblackList = async ctx => {
}
}
ctx
.
body
=
await
req
(
ctx
,
opts
)
ctx
.
body
=
await
req
(
ctx
,
opts
)
}
}
// 获取钱包账户余额状态
exports
.
getWalletAccountStatus
=
async
ctx
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/wallet/background/get_wallet_account_status`
;
const
opts
=
{
url
,
method
:
"GET"
,
qs
:
ctx
.
request
.
query
}
ctx
.
body
=
await
req
(
ctx
,
opts
)
}
// 钱包账户余额状态
exports
.
resetAccountStatus
=
async
ctx
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/wallet/background/reset_wallet_account_status`
;
const
opts
=
{
url
,
method
:
"POST"
,
json
:
true
,
body
:
ctx
.
request
.
body
}
ctx
.
body
=
await
req
(
ctx
,
opts
)
}
const
getUserPermission
=
async
(
ctx
)
=>
{
const
getUserPermission
=
async
(
ctx
)
=>
{
const
url
=
`
${
WITHDRAWAL_URI
}
/merchant/authority/get_role_list`
;
const
url
=
`
${
WITHDRAWAL_URI
}
/merchant/authority/get_role_list`
;
...
...
server/router.js
View file @
b4b18033
...
@@ -128,5 +128,7 @@ router.get(`${API_VERSION}/get_account_list`, withdrawal.getAccountList)
...
@@ -128,5 +128,7 @@ router.get(`${API_VERSION}/get_account_list`, withdrawal.getAccountList)
router
.
get
(
`
${
API_VERSION
}
/get_record_list`
,
withdrawal
.
getRecordList
)
router
.
get
(
`
${
API_VERSION
}
/get_record_list`
,
withdrawal
.
getRecordList
)
router
.
post
(
`
${
API_VERSION
}
/get_account_black_list`
,
withdrawal
.
getAccountBlackList
)
router
.
post
(
`
${
API_VERSION
}
/get_account_black_list`
,
withdrawal
.
getAccountBlackList
)
router
.
post
(
`
${
API_VERSION
}
/get_reblack_list`
,
withdrawal
.
getReblackList
)
router
.
post
(
`
${
API_VERSION
}
/get_reblack_list`
,
withdrawal
.
getReblackList
)
router
.
get
(
`
${
API_VERSION
}
/get_wallet_account_status`
,
withdrawal
.
getWalletAccountStatus
)
router
.
post
(
`
${
API_VERSION
}
/reset_wallet_account_status`
,
withdrawal
.
resetAccountStatus
)
module
.
exports
=
router
;
module
.
exports
=
router
;
\ No newline at end of file
src/pages/Groupmeal/newOrderManagement/index.vue
View file @
b4b18033
...
@@ -201,10 +201,10 @@
...
@@ -201,10 +201,10 @@
>
退款
</el-button
>
退款
</el-button
>
>
<el-button-group
v-show=
"scope.row.order_status == '3'"
>
<el-button-group
v-show=
"scope.row.order_status == '3'"
>
<el-button
type=
"text"
size=
"small"
@
click=
"agree(scope.row)"
<el-button
type=
"text"
@
click=
"agree(scope.row)"
>
同意
</el-button
>
同意
</el-button
>
>
<el-button
type=
"text"
size=
"small"
@
click=
"refuse(scope.row)"
<el-button
type=
"text"
@
click=
"refuse(scope.row)"
>
拒绝
</el-button
>
拒绝
</el-button
>
>
</el-button-group>
</el-button-group>
...
@@ -292,10 +292,10 @@
...
@@ -292,10 +292,10 @@
>
退款
<
/el-butto
n
>
退款
<
/el-butto
n
>
>
<
el
-
button
-
group
v
-
show
=
"scope.row.order_status == '3'"
>
<
el
-
button
-
group
v
-
show
=
"scope.row.order_status == '3'"
>
<
el
-
button
type
=
"text"
size
=
"small"
@
click
=
"agree(scope.row)"
<
el
-
button
type
=
"text"
@
click
=
"agree(scope.row)"
>
同意
<
/el-butto
n
>
同意
<
/el-butto
n
>
>
<
el
-
button
type
=
"text"
size
=
"small"
@
click
=
"refuse(scope.row)"
<
el
-
button
type
=
"text"
@
click
=
"refuse(scope.row)"
>
拒绝
<
/el-butto
n
>
拒绝
<
/el-butto
n
>
>
<
/el-button-group
>
<
/el-button-group
>
...
...
src/pages/Groupmeal/orderManagement/index.less
View file @
b4b18033
...
@@ -7,6 +7,10 @@
...
@@ -7,6 +7,10 @@
margin-bottom:10px;
margin-bottom:10px;
}
}
.el-button-group>.el-button:first-child {
margin-right: 10px;
}
.exportForm,.exportBtn{
.exportForm,.exportBtn{
text-align:center;
text-align:center;
}
}
...
...
src/pages/Groupmeal/orderManagement/index.vue
View file @
b4b18033
...
@@ -336,7 +336,7 @@
...
@@ -336,7 +336,7 @@
</el-form-item>
</el-form-item>
</el-dialog>
</el-dialog>
<!-- 退款弹窗 -->
<!-- 退款弹窗 -->
<el-dialog
title=
"退款"
width=
"
3
0%"
top=
"10%"
v-model=
"refundShow"
>
<el-dialog
title=
"退款"
width=
"
5
0%"
top=
"10%"
v-model=
"refundShow"
>
<el-checkbox
<el-checkbox
:indeterminate=
"isIndeterminate"
:indeterminate=
"isIndeterminate"
v-model=
"checkAll"
v-model=
"checkAll"
...
...
src/pages/Withdrawal/Examine/h5.vue
View file @
b4b18033
<
template
>
<
template
>
<!-- 提现失败页 -->
<!-- 提现失败页 -->
<!--
<auditTab
v-if=
"status_text == 'fourth'"
></auditTab>
-->
<!--
<auditTab
v-if=
"status_text == 'fourth'"
></auditTab>
-->
<!--
<el-card
class=
"goods-h5"
>
-->
<!--
<el-card
class=
"goods-h5"
>
-->
<div
class=
"goods-h5"
>
<div
class=
"goods-h5"
>
<el-table
:data=
"goodsList"
border
max-height=
"700"
>
<el-table
:data=
"goodsList"
border
max-height=
"700"
>
<el-table-column
<el-table-column
label=
"登录地点"
label=
"登录地点"
prop=
"withdraw_address"
prop=
"withdraw_address"
align=
"center"
align=
"center"
></el-table-column>
></el-table-column>
<el-table-column
<el-table-column
label=
"申请用户"
label=
"风控等级"
prop=
"user_id"
prop=
"risk_level_text"
align=
"center"
align=
"center"
></el-table-column>
></el-table-column>
<el-table-column
<el-table-column
label=
"提现金额"
label=
"申请用户"
prop=
"amount"
prop=
"user_id"
align=
"center"
align=
"center"
></el-table-column>
></el-table-column>
<el-table-column
<el-table-column
label=
"申请时间"
label=
"提现金额"
prop=
"create_time"
prop=
"amount"
align=
"center"
align=
"center"
></el-table-column>
></el-table-column>
<!-- 操作快捷键 -->
<el-table-column
<el-table-column
label=
"操作"
align=
"center"
>
label=
"申请时间"
<template
v-slot:default=
"scope"
>
prop=
"create_time"
<el-button
align=
"center"
type=
"text"
></el-table-column>
v-show=
"searchProps.status == '0' && isAllowedToAudit"
<!-- 操作快捷键 -->
@
click=
"handleDetail(scope.row.id)"
<el-table-column
label=
"操作"
align=
"center"
>
>
审核
</el-button
<template
v-slot:default=
"scope"
>
>
<el-button
</
template
>
type=
"text"
</el-table-column>
v-show=
"searchProps.status == '0' && isAllowedToAudit"
</el-table>
@
click=
"handleDetail(scope.row.id)"
>
审核
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- 页码区 -->
<!-- 页码区 -->
<el-pagination
<el-pagination
class=
"pagination"
class=
"pagination"
@
current-change=
"handleCurrentChange"
@
current-change=
"handleCurrentChange"
v-model:currentPage=
"searchProps.page"
v-model:currentPage=
"searchProps.page"
:page-size=
"searchProps.page_size"
:page-size=
"searchProps.page_size"
layout=
"total,prev, pager, next, jumper"
layout=
"total,prev, pager, next, jumper"
:total=
"searchProps.count"
:total=
"searchProps.count"
>
>
</el-pagination>
</el-pagination>
</div>
</div>
<!-- </el-card> -->
<!-- </el-card> -->
</template>
</template>
<
script
>
<
script
>
import
{
import
{
...
@@ -168,7 +173,7 @@ export default {
...
@@ -168,7 +173,7 @@ export default {
},
},
// 提现申请审核详情
// 提现申请审核详情
async
handleDetail
(
id
)
{
async
handleDetail
(
id
)
{
this
.
$router
.
push
({
name
:
'withdrawDetail'
,
query
:
{
id
:
id
}
})
this
.
$router
.
push
({
name
:
"withdrawDetail"
,
query
:
{
id
:
id
}
});
// try {
// try {
// const res = await getApplyDetail({ id });
// const res = await getApplyDetail({ id });
// const showData = res.info || {};
// const showData = res.info || {};
...
@@ -307,7 +312,9 @@ export default {
...
@@ -307,7 +312,9 @@ export default {
const
WITHDRAWAL_PERMISSION_ID1
=
10000005
;
const
WITHDRAWAL_PERMISSION_ID1
=
10000005
;
let
withdrawlPermission
=
this
.
permissions
.
filter
(
let
withdrawlPermission
=
this
.
permissions
.
filter
(
(
item
)
=>
(
item
.
id
===
WITHDRAWAL_PERMISSION_ID
||
item
.
id
===
WITHDRAWAL_PERMISSION_ID1
)
(
item
)
=>
item
.
id
===
WITHDRAWAL_PERMISSION_ID
||
item
.
id
===
WITHDRAWAL_PERMISSION_ID1
);
);
// 无此模块权限
// 无此模块权限
if
(
withdrawlPermission
.
length
===
0
)
{
if
(
withdrawlPermission
.
length
===
0
)
{
...
@@ -317,7 +324,8 @@ export default {
...
@@ -317,7 +324,8 @@ export default {
const
AUDIT_PERMSSION_ID
=
14
;
const
AUDIT_PERMSSION_ID
=
14
;
const
AUDIT_PERMSSION_ID1
=
10000014
;
const
AUDIT_PERMSSION_ID1
=
10000014
;
const
auditPermission
=
withdrawlPermission
[
0
].
sub_permissions
.
filter
(
const
auditPermission
=
withdrawlPermission
[
0
].
sub_permissions
.
filter
(
(
item
)
=>
(
item
.
id
===
AUDIT_PERMSSION_ID
||
item
.
id
===
AUDIT_PERMSSION_ID1
)
(
item
)
=>
item
.
id
===
AUDIT_PERMSSION_ID
||
item
.
id
===
AUDIT_PERMSSION_ID1
);
);
return
auditPermission
.
length
!==
0
;
return
auditPermission
.
length
!==
0
;
...
@@ -327,28 +335,27 @@ export default {
...
@@ -327,28 +335,27 @@ export default {
</
script
>
</
script
>
<
style
lang=
"less"
src=
"./index.less"
scope
>
<
style
lang=
"less"
src=
"./index.less"
scope
>
.goods-h5 {
.goods-h5 {
width: 90%;
width: 90%;
margin: 20px auto;
margin: 20px auto;
.dialog-footer {
.dialog-footer {
display: flex;
display: flex;
justify-content: center;
justify-content: center;
align-items: center;
align-items: center;
}
}
.apply-list {
.apply-list {
li {
li {
width: 70%;
width: 70%;
display: flex;
display: flex;
justify-content: space-between;
justify-content: space-between;
span {
span {
width: 70px;
width: 70px;
text-align: left;
text-align: left;
}
}
}
}
}
}
}
}
.el-message-box {
.el-message-box {
width: 80vw;
width: 80vw;
margin: 0 auto;
margin: 0 auto;
}
}
</
style
>
</
style
>
src/pages/Withdrawal/Examine/index.less
View file @
b4b18033
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
padding-right: 10px;
padding-right: 10px;
}
}
.list-right {
.list-right {
display:inline-block;
//
display:inline-block;
width: 70%;
width: 70%;
}
}
}
}
...
@@ -93,11 +93,11 @@
...
@@ -93,11 +93,11 @@
}
}
.apply-list {
.apply-list {
li {
li {
width:
7
0%;
width:
9
0%;
display: flex;
display: flex;
justify-content: space-between;
justify-content: space-between;
span {
span {
width:
7
0px;
width:
15
0px;
text-align: left;
text-align: left;
}
}
}
}
...
@@ -108,3 +108,12 @@
...
@@ -108,3 +108,12 @@
width: 20vw;
width: 20vw;
margin: 0 auto;
margin: 0 auto;
}
}
.shell {
float: right;
width: 550px;
margin-top: -20px;
}
.open {
float: right;
margin-bottom: 10px;
}
src/pages/Withdrawal/Examine/index.vue
View file @
b4b18033
This diff is collapsed.
Click to expand it.
src/pages/Withdrawal/Examine/withdrawDetail.vue
View file @
b4b18033
...
@@ -2,13 +2,34 @@
...
@@ -2,13 +2,34 @@
<div
class=
"goods-h5"
>
<div
class=
"goods-h5"
>
<el-form>
<el-form>
<ul
class=
"apply-list"
>
<ul
class=
"apply-list"
>
<li><span>
登录地点:
</span><span>
{{
dialogData
.
showData
.
withdraw_address
}}
</span></li>
<li>
<li>
提现用户:
<span>
{{
dialogData
.
showData
.
user_id
}}
</span></li>
<span>
登录地点:
</span
<li>
提现金额:
<span>
{{
dialogData
.
showData
.
amount
}}
</span></li>
><span>
{{
dialogData
.
showData
.
withdraw_address
}}
</span>
<li>
最近24小时收入:
<span>
{{
dialogData
.
showData
.
lately_amount
}}
</span></li>
</li>
<li>
近两天分享增长:
<span>
{{
dialogData
.
showData
.
lately_share
}}
</span></li>
<li>
<li>
近两天分享下载量:
<span>
{{
dialogData
.
showData
.
lately_download
}}
</span></li>
<span>
风控等级:
</span
<li>
历史分享增长:
<span>
{{
dialogData
.
showData
.
history_share
}}
</span></li>
><span>
{{
dialogData
.
showData
.
risk_level_text
}}
</span>
</li>
<li>
提现用户:
<span>
{{
dialogData
.
showData
.
user_id
}}
</span>
</li>
<li>
提现金额:
<span>
{{
dialogData
.
showData
.
amount
}}
</span>
</li>
<li>
最近24小时收入:
<span>
{{
dialogData
.
showData
.
lately_amount
}}
</span>
</li>
<li>
近两天分享增长:
<span>
{{
dialogData
.
showData
.
lately_share
}}
</span>
</li>
<li>
近两天分享下载量:
<span>
{{
dialogData
.
showData
.
lately_download
}}
</span>
</li>
<li>
历史分享增长:
<span>
{{
dialogData
.
showData
.
history_share
}}
</span>
</li>
</ul>
</ul>
<el-form-item
label=
"奖励明细:"
>
<el-form-item
label=
"奖励明细:"
>
<el-table
<el-table
...
@@ -17,61 +38,41 @@
...
@@ -17,61 +38,41 @@
align=
"center"
align=
"center"
max-height=
"300"
max-height=
"300"
size=
"small"
size=
"small"
>
>
<el-table-column
<el-table-column
align=
"center"
prop=
"create_time"
label=
"流水时间"
>
align=
"center"
prop=
"create_time"
label=
"流水时间"
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
prop=
"amount"
label=
"分享用户量"
>
align=
"center"
prop=
"amount"
label=
"分享用户量"
>
<template
v-slot:default=
"scope"
>
<template
v-slot:default=
"scope"
>
<span>
{{
scope
?
"+"
+
scope
.
row
.
amount
:
null
}}
</span>
<span>
{{
scope
?
"+"
+
scope
.
row
.
amount
:
null
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
<el-table-column
align=
"center"
prop=
"third_order_desc"
label=
"说明"
>
align=
"center"
prop=
"third_order_desc"
label=
"说明"
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
class=
"dialog-footer"
>
<div
class=
"dialog-footer"
>
<div
v-if=
"!showBackBtn"
>
<div
v-if=
"!showBackBtn"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleAdoptRefuse('通过')"
>
通过
</el-button
>
<el-button
type=
"danger"
size=
"small"
@
click=
"handleAdoptRefuse('拒绝')"
>
拒绝
</el-button
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleBlackList('黑名单')"
>
黑名单
</el-button
>
</div>
<el-button
<el-button
type=
"primary"
size=
"small"
size=
"small"
@
click=
"handleAdoptRefuse('通过')"
>
通过
</el-button
>
<el-button
type=
"danger"
size=
"small"
@
click=
"handleAdoptRefuse('拒绝')"
>
拒绝
</el-button
>
<el-button
type=
"primary"
type=
"primary"
v-else
size=
"small"
@
click=
"
$router.go(-1
)"
@
click=
"
handleBlackList('黑名单'
)"
>
返回
</el-button
>
黑名单
</el-button
>
>
</div>
</div>
<el-button
size=
"small"
type=
"primary"
v-else
@
click=
"$router.go(-1)"
>
返回
</el-button
>
</div>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
...
@@ -118,9 +119,7 @@ export default {
...
@@ -118,9 +119,7 @@ export default {
const
showData
=
res
.
info
||
{};
const
showData
=
res
.
info
||
{};
this
.
dialogData
=
{
...
this
.
dialogData
,
showData
};
this
.
dialogData
=
{
...
this
.
dialogData
,
showData
};
},
},
async
mounted
()
{
async
mounted
()
{},
},
methods
:
{
methods
:
{
async
getPermissionsAll
()
{
async
getPermissionsAll
()
{
// 不能够信赖 store 中的 email,无法知道全局中的 fetchCurrentUser 处理完毕
// 不能够信赖 store 中的 email,无法知道全局中的 fetchCurrentUser 处理完毕
...
@@ -157,7 +156,7 @@ export default {
...
@@ -157,7 +156,7 @@ export default {
})
})
.
catch
(
async
()
=>
{
.
catch
(
async
()
=>
{
const
res
=
await
urlObj
[
action
](
params
);
const
res
=
await
urlObj
[
action
](
params
);
if
(
+
res
.
code
===
0
)
{
if
(
+
res
.
code
===
0
)
{
this
.
$message
({
this
.
$message
({
type
:
"success"
,
type
:
"success"
,
message
:
"操作成功"
,
message
:
"操作成功"
,
...
@@ -167,8 +166,8 @@ export default {
...
@@ -167,8 +166,8 @@ export default {
this
.
$message
({
this
.
$message
({
type
:
"error"
,
type
:
"error"
,
message
:
res
.
reason
,
message
:
res
.
reason
,
});
});
}
}
});
});
},
},
...
@@ -205,7 +204,9 @@ export default {
...
@@ -205,7 +204,9 @@ export default {
const
WITHDRAWAL_PERMISSION_ID1
=
10000005
;
const
WITHDRAWAL_PERMISSION_ID1
=
10000005
;
let
withdrawlPermission
=
this
.
permissions
.
filter
(
let
withdrawlPermission
=
this
.
permissions
.
filter
(
(
item
)
=>
(
item
.
id
===
WITHDRAWAL_PERMISSION_ID
||
item
.
id
===
WITHDRAWAL_PERMISSION_ID1
)
(
item
)
=>
item
.
id
===
WITHDRAWAL_PERMISSION_ID
||
item
.
id
===
WITHDRAWAL_PERMISSION_ID1
);
);
// 无此模块权限
// 无此模块权限
if
(
withdrawlPermission
.
length
===
0
)
{
if
(
withdrawlPermission
.
length
===
0
)
{
...
@@ -215,7 +216,8 @@ export default {
...
@@ -215,7 +216,8 @@ export default {
const
AUDIT_PERMSSION_ID
=
14
;
const
AUDIT_PERMSSION_ID
=
14
;
const
AUDIT_PERMSSION_ID1
=
10000014
;
const
AUDIT_PERMSSION_ID1
=
10000014
;
const
auditPermission
=
withdrawlPermission
[
0
].
sub_permissions
.
filter
(
const
auditPermission
=
withdrawlPermission
[
0
].
sub_permissions
.
filter
(
(
item
)
=>
(
item
.
id
===
AUDIT_PERMSSION_ID
||
item
.
id
===
AUDIT_PERMSSION_ID1
)
(
item
)
=>
item
.
id
===
AUDIT_PERMSSION_ID
||
item
.
id
===
AUDIT_PERMSSION_ID1
);
);
return
auditPermission
.
length
!==
0
;
return
auditPermission
.
length
!==
0
;
...
...
src/service/Withdrawal/withdrawal.js
View file @
b4b18033
...
@@ -67,4 +67,14 @@ export async function getAccountBlackList(params) {
...
@@ -67,4 +67,14 @@ export async function getAccountBlackList(params) {
export
async
function
getReblackList
(
params
)
{
export
async
function
getReblackList
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/get_reblack_list"
,
params
)
const
res
=
await
axios
.
post
(
"/api/v1/get_reblack_list"
,
params
)
return
res
;
return
res
;
}
// 获取钱包账户余额状态
export
async
function
getWalletAccountStatus
(
params
)
{
const
res
=
await
axios
.
get
(
"/api/v1/get_wallet_account_status"
,{
params
})
return
res
;
}
// 钱包账户余额状态(开启按钮)
export
async
function
resetAccountStatus
(
params
)
{
const
res
=
await
axios
.
post
(
"/api/v1/reset_wallet_account_status"
,
params
)
return
res
;
}
}
\ No newline at end of file
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