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
297800e2
Commit
297800e2
authored
May 07, 2021
by
GuanHua
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev
parents
e538fb4f
87431790
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
112 additions
and
50 deletions
+112
-50
index.ts
src/constants/index.ts
+15
-3
index.tsx
...ges/afterService/components/ManualDeliveryModal/index.tsx
+33
-2
constants.ts
src/pages/afterService/constants.ts
+18
-18
verify.tsx
...rService/exchangeApplication/exchangePrDeliver/verify.tsx
+10
-8
verify.tsx
...Service/exchangeApplication/exchangePrReceived/verify.tsx
+1
-1
verify.tsx
.../afterService/exchangeManage/exchangePrDeliver/verify.tsx
+9
-6
verify.tsx
...afterService/exchangeManage/exchangePrReceived/verify.tsx
+1
-0
verify.tsx
...afterService/returnApplication/returnPrDeliver/verify.tsx
+9
-6
verify.tsx
...ges/afterService/returnManage/returnPrReceived/verify.tsx
+1
-1
index.tsx
src/pages/member/components/BasicInfo/index.tsx
+1
-1
index.tsx
src/pages/member/memberQuery/index.tsx
+11
-1
useBusinessEffects.ts
.../bills/components/BillsForm/effects/useBusinessEffects.ts
+2
-2
index.tsx
...ion/stockSellStorage/bills/components/BillsForm/index.tsx
+1
-1
No files found.
src/constants/index.ts
View file @
297800e2
...
...
@@ -406,6 +406,18 @@ export const ORDER_TYPE = ['',
]
// 提货方式
/**
* 物流
*/
export
const
DELIVERY_TYPE_LOGISTICS
=
1
;
/**
* 自提
*/
export
const
DELIVERY_TYPE_SELF_PICKUP
=
2
;
/**
* 无须配送
*/
export
const
DELIVERY_TYPE_NO_DELIVERY
=
3
;
export
const
DELIVERY_TYPE
=
[
''
,
'物流'
,
'自提'
,
...
...
@@ -413,9 +425,9 @@ export const DELIVERY_TYPE = ['',
]
export
const
DELIVERY_TYPE_ENUM
=
[
{
label
:
'物流'
,
value
:
1
},
{
label
:
'自提'
,
value
:
2
},
{
label
:
'无需配送'
,
value
:
3
},
{
label
:
'物流'
,
value
:
DELIVERY_TYPE_LOGISTICS
},
{
label
:
'自提'
,
value
:
DELIVERY_TYPE_SELF_PICKUP
},
{
label
:
'无需配送'
,
value
:
DELIVERY_TYPE_NO_DELIVERY
},
]
// 仓位状态
...
...
src/pages/afterService/components/ManualDeliveryModal/index.tsx
View file @
297800e2
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-09 10:48:12
* @LastEditors: XieZhiXiong
* @LastEditTime: 202
0-12-31 10:48:2
2
* @LastEditTime: 202
1-04-06 10:39:5
2
* @Description: 手动发货弹窗
*/
import
React
from
'react'
;
...
...
@@ -14,6 +14,7 @@ import NiceForm from '@/components/NiceForm';
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
useLinkageUtils
}
from
'@/utils/formEffectUtils'
;
import
{
DELIVERY_TYPE_SELF_PICKUP
}
from
'@/constants'
;
import
{
schema
}
from
'./schema'
;
import
styles
from
'./index.less'
;
...
...
@@ -25,14 +26,38 @@ const {
}
=
FormEffectHooks
;
interface
VerifyModalProps
{
/**
* 是否可见的
*/
visible
:
boolean
;
/**
* 点击确认按钮的 loading 状态
*/
confirmLoading
:
boolean
;
/**
* 提交事件
*/
onSubmit
:
(
values
:
{[
key
:
string
]:
any
})
=>
void
;
/**
* 隐藏事件
*/
onVisible
:
(
flag
:
boolean
)
=>
void
;
// 是否编辑的
/**
* 是否可编辑ide
*/
isEdit
?:
boolean
;
/**
* Modal 标题
*/
title
?:
string
;
/**
* 值
*/
value
?:
{[
key
:
string
]:
any
};
/**
* 配送方式
*/
deliveryType
:
number
,
};
const
VerifyModal
:
React
.
FC
<
VerifyModalProps
>
=
({
...
...
@@ -43,6 +68,7 @@ const VerifyModal: React.FC<VerifyModalProps> = ({
isEdit
=
true
,
title
=
'换货发货处理'
,
value
=
{},
deliveryType
,
})
=>
{
const
handleSubmit
=
values
=>
{
...
...
@@ -158,6 +184,11 @@ const VerifyModal: React.FC<VerifyModalProps> = ({
state
.
display
=
true
;
});
}
// 配送方式为自提 隐藏 发货单号 与 物流公司
if
(
deliveryType
===
DELIVERY_TYPE_SELF_PICKUP
)
{
linkage
.
hide
(
'*(logisticsOrderNo,logisticsName)'
);
}
});
}
}
initialValues=
{
{
...
...
src/pages/afterService/constants.ts
View file @
297800e2
...
...
@@ -122,7 +122,7 @@ export const REPAIR_OUTER_STATUS_TAG_MAP = {
// 售后维修内部部状态 Badge map
export
const
REPAIR_INNER_STATUS_BADGE_MAP
=
{
[
REPAIR_INNER_STATUS_UNCOMMITTED
]:
'#
669EDE
'
,
[
REPAIR_INNER_STATUS_UNCOMMITTED
]:
'#
EBECF0
'
,
[
REPAIR_INNER_STATUS_COMMIT_SUCCESS
]:
'#41CC9E'
,
[
REPAIR_INNER_STATUS_SUCCESS_1
]:
'#41CC9E'
,
[
REPAIR_INNER_STATUS_SUCCESS_2
]:
'#41CC9E'
,
...
...
@@ -141,16 +141,16 @@ export const EXCHANGE_OUTER_STATUS_TAG_MAP = {
[
EXCHANGE_OUTER_STATUS_FAILED
]:
'danger'
,
[
EXCHANGE_OUTER_STATUS_SUCCESS
]:
'primary'
,
[
EXCHANGE_OUTER_STATUS_NOT_ADDED_RETURN_DELIVERY
]:
'danger'
,
[
EXCHANGE_OUTER_STATUS_CONSUMER_NOT_ADDED_LOGISTICS
]:
'
warning
'
,
[
EXCHANGE_OUTER_STATUS_CONSUMER_NOT_ADDED_LOGISTICS
]:
'
danger
'
,
[
EXCHANGE_OUTER_STATUS_RETURN_DELIVERY
]:
'danger'
,
[
EXCHANGE_OUTER_STATUS_NOT_ADDED_RETURN_STORAGE
]:
'danger'
,
[
EXCHANGE_OUTER_STATUS_RETURN_RECEIVE
]:
'danger'
,
[
EXCHANGE_OUTER_STATUS_UNCONFIRMED_RETURN_RECEIPT
]:
'
danger
'
,
[
EXCHANGE_OUTER_STATUS_NOT_ADDED_REPLACE_DELIVERY
]:
'
nobility
'
,
[
EXCHANGE_OUTER_STATUS_SUPPLIER_NOT_ADDED_LOGISTICS
]:
'
success
'
,
[
EXCHANGE_OUTER_STATUS_REPLACE_DELIVERY
]:
'
nobility
'
,
[
EXCHANGE_OUTER_STATUS_NOT_ADDED_REPLACE_STORAGE
]:
'
nobility
'
,
[
EXCHANGE_OUTER_STATUS_REPLACE_RECEIVE
]:
'
nobility
'
,
[
EXCHANGE_OUTER_STATUS_UNCONFIRMED_RETURN_RECEIPT
]:
'
primary
'
,
[
EXCHANGE_OUTER_STATUS_NOT_ADDED_REPLACE_DELIVERY
]:
'
danger
'
,
[
EXCHANGE_OUTER_STATUS_SUPPLIER_NOT_ADDED_LOGISTICS
]:
'
danger
'
,
[
EXCHANGE_OUTER_STATUS_REPLACE_DELIVERY
]:
'
danger
'
,
[
EXCHANGE_OUTER_STATUS_NOT_ADDED_REPLACE_STORAGE
]:
'
danger
'
,
[
EXCHANGE_OUTER_STATUS_REPLACE_RECEIVE
]:
'
danger
'
,
[
EXCHANGE_OUTER_STATUS_UNCONFIRMED_REPLACE_RECEIPT
]:
'primary'
,
[
EXCHANGE_OUTER_STATUS_UNCONFIRMED_FINISHED
]:
'primary'
,
[
EXCHANGE_OUTER_STATUS_FINISHED
]:
'success'
,
...
...
@@ -158,7 +158,7 @@ export const EXCHANGE_OUTER_STATUS_TAG_MAP = {
// 售后换货内部状态 Badge map
export
const
EXCHANGE_INNER_STATUS_BADGE_MAP
=
{
[
EXCHANGE_INNER_STATUS_UNCOMMITTED
]:
'#
669EDE
'
,
[
EXCHANGE_INNER_STATUS_UNCOMMITTED
]:
'#
EBECF0
'
,
[
EXCHANGE_INNER_STATUS_COMMIT_SUCCESS
]:
'#41CC9E'
,
[
EXCHANGE_INNER_STATUS_SUCCESS_1
]:
'#41CC9E'
,
[
EXCHANGE_INNER_STATUS_SUCCESS_2
]:
'#41CC9E'
,
...
...
@@ -215,13 +215,13 @@ export const RETURN_OUTER_STATUS_TAG_MAP = {
[
RETURN_OUTER_STATUS_UNCOMMITTED
]:
'default'
,
[
RETURN_OUTER_UNCONFIRMED
]:
'primary'
,
[
RETURN_OUTER_STATUS_FAILED
]:
'danger'
,
[
RETURN_OUTER_STATUS_SUCCESS
]:
'
primary
'
,
[
RETURN_OUTER_STATUS_SUCCESS
]:
'
success
'
,
[
RETURN_OUTER_STATUS_NOT_ADDED_RETURN_DELIVERY
]:
'danger'
,
[
RETURN_OUTER_STATUS_CONSUMER_NOT_ADDED_LOGISTICS
]:
'
warning
'
,
[
RETURN_OUTER_STATUS_CONSUMER_NOT_ADDED_LOGISTICS
]:
'
danger
'
,
[
RETURN_OUTER_STATUS_RETURN_DELIVERY
]:
'danger'
,
[
RETURN_OUTER_STATUS_NOT_ADDED_RETURN_STORAGE
]:
'danger'
,
[
RETURN_OUTER_STATUS_RETURN_RECEIVE
]:
'danger'
,
[
RETURN_OUTER_STATUS_UNCONFIRMED_RETURN_RECEIPT
]:
'
danger
'
,
[
RETURN_OUTER_STATUS_UNCONFIRMED_RETURN_RECEIPT
]:
'
primary
'
,
[
RETURN_OUTER_STATUS_TO_BE_REFUNDED
]:
'danger'
,
[
RETURN_OUTER_STATUS_UNCONFIRMED_REFUNDED
]:
'primary'
,
[
RETURN_OUTER_STATUS_NOT_RECEIVED
]:
'warning'
,
...
...
@@ -231,17 +231,17 @@ export const RETURN_OUTER_STATUS_TAG_MAP = {
// 售后退货内部状态 Badge map
export
const
RETURN_INNER_STATUS_BADGE_MAP
=
{
[
RETURN_INNER_STATUS_UNCOMMITTED
]:
'#
669EDE
'
,
[
RETURN_INNER_STATUS_UNCOMMITTED
]:
'#
EBECF0
'
,
[
RETURN_INNER_STATUS_COMMIT_SUCCESS
]:
'#41CC9E'
,
[
RETURN_INNER_STATUS_SUCCESS_1
]:
'#
41CC9
E'
,
[
RETURN_INNER_STATUS_SUCCESS_2
]:
'#
41CC9
E'
,
[
RETURN_INNER_STATUS_SUCCESS_1
]:
'#
669ED
E'
,
[
RETURN_INNER_STATUS_SUCCESS_2
]:
'#
669ED
E'
,
[
RETURN_INNER_STATUS_FAILED_2
]:
'#EF6260'
,
[
RETURN_INNER_STATUS_CONFIRM_SUCCESS
]:
'#41CC9E'
,
[
RETURN_INNER_STATUS_CONFIRM_FAILED
]:
'#EF6260'
,
[
RETURN_INNER_STATUS_NOT_ADDED_RETURN_DELIVERY
]:
'#E
63F3B
'
,
[
RETURN_INNER_STATUS_NOT_ADDED_RETURN_DELIVERY
]:
'#E
F6260
'
,
[
RETURN_INNER_STATUS_UNREVIEWED_RETURN_DELIVERY
]:
'#FF991F'
,
[
RETURN_INNER_STATUS_CONSUMER_NOT_ADDED_LOGISTICS
]:
'#E
63F3B
'
,
[
RETURN_INNER_STATUS_CONSUMER_UNCONFIRMED_LOGISTICS
]:
'#
6C9CEB
'
,
[
RETURN_INNER_STATUS_CONSUMER_NOT_ADDED_LOGISTICS
]:
'#E
F6260
'
,
[
RETURN_INNER_STATUS_CONSUMER_UNCONFIRMED_LOGISTICS
]:
'#
FF991F
'
,
[
RETURN_INNER_STATUS_UNCONFIRMED_RETURN_DELIVERY
]:
'#6C9CEB'
,
[
RETURN_INNER_STATUS_NOT_ADDED_RETURN_STORAGE
]:
'#E63F3B'
,
[
RETURN_INNER_STATUS_UNREVIEWED_RETURN_STORAGE
]:
'#FF991F'
,
...
...
src/pages/afterService/exchangeApplication/exchangePrDeliver/verify.tsx
View file @
297800e2
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-01-06 11:36:34
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
2-20 17:18:35
* @LastEditTime: 2021-0
4-06 10:47:06
* @Description:
*/
import
React
,
{
useState
}
from
'react'
;
...
...
@@ -48,6 +48,7 @@ const ExchangePrDeliverVerify: React.FC = () => {
headExtra=
{
info
=>
(
<>
{
(
info
&&
info
.
taskType
===
EXCHANGE_GOODS_MANUAL_DELIVERY
)
&&
(
<>
<
Button
type=
"default"
icon=
{
<
SettingOutlined
/>
}
...
...
@@ -55,22 +56,23 @@ const ExchangePrDeliverVerify: React.FC = () => {
>
手工退货发货
</
Button
>
)
}
</>
)
}
target=
"/memberCenter/afterService/exchangeApplication/exchangePrDeliver"
isEditRefundDeliver
/>
<
ManualDeliveryModal
title=
"退货发货处理"
visible=
{
modalVisible
}
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
deliveryType=
{
info
.
returnGoodsAddress
.
deliveryType
}
isEdit=
{
true
}
/>
</>
)
}
</>
)
}
target=
"/memberCenter/afterService/exchangeApplication/exchangePrDeliver"
isEditRefundDeliver
/>
</>
);
};
...
...
src/pages/afterService/exchangeApplication/exchangePrReceived/verify.tsx
View file @
297800e2
...
...
@@ -62,7 +62,6 @@ const ExchangePrReceivedVerify: React.FC = () => {
</
Button
>
<
ManualDeliveryModal
key=
"2"
title=
"确认换货收货"
value=
{
{
deliveryAddressTxt
:
manualReplaceGoodsAddress
.
deliveryAddress
,
...
...
@@ -74,6 +73,7 @@ const ExchangePrReceivedVerify: React.FC = () => {
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
deliveryType=
{
info
.
replaceGoodsAddress
.
deliveryType
}
isEdit=
{
false
}
/>
</>
...
...
src/pages/afterService/exchangeManage/exchangePrDeliver/verify.tsx
View file @
297800e2
...
...
@@ -41,6 +41,7 @@ const ExchangePrDeliverVerify: React.FC = () => {
headExtra=
{
info
=>
(
<>
{
(
info
&&
info
.
taskType
===
EXCHANGE_GOODS_MANUAL_DELIVERY
)
&&
(
<>
<
Button
type=
"default"
icon=
{
<
SettingOutlined
/>
}
...
...
@@ -48,21 +49,23 @@ const ExchangePrDeliverVerify: React.FC = () => {
>
手工换货发货
</
Button
>
)
}
</>
)
}
target=
"/memberCenter/afterService/exchangeManage/exchangePrDeliver"
isEditExchangeDeliver
/>
<
ManualDeliveryModal
visible=
{
modalVisible
}
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
deliveryType=
{
info
.
replaceGoodsAddress
.
deliveryType
}
isEdit=
{
true
}
/>
</>
)
}
</>
)
}
target=
"/memberCenter/afterService/exchangeManage/exchangePrDeliver"
isEditExchangeDeliver
/>
</>
);
};
...
...
src/pages/afterService/exchangeManage/exchangePrReceived/verify.tsx
View file @
297800e2
...
...
@@ -73,6 +73,7 @@ const ExchangePrReceivedVerify: React.FC = () => {
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
deliveryType=
{
info
.
returnGoodsAddress
.
deliveryType
}
isEdit=
{
false
}
/>
</>
...
...
src/pages/afterService/returnApplication/returnPrDeliver/verify.tsx
View file @
297800e2
...
...
@@ -41,6 +41,7 @@ const ReturnPrDeliverVerify: React.FC = () => {
headExtra=
{
info
=>
(
<>
{
(
info
&&
info
.
taskType
===
RETURN_GOODS_MANUAL_DELIVERY
)
&&
(
<>
<
Button
type=
"default"
icon=
{
<
SettingOutlined
/>
}
...
...
@@ -48,12 +49,6 @@ const ReturnPrDeliverVerify: React.FC = () => {
>
手工退货发货
</
Button
>
)
}
</>
)
}
target=
"/memberCenter/afterService/returnApplication/returnPrDeliver"
isEditRefundDeliver
/>
<
ManualDeliveryModal
value=
{
{}
}
...
...
@@ -61,6 +56,14 @@ const ReturnPrDeliverVerify: React.FC = () => {
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
deliveryType=
{
info
.
returnGoodsAddress
.
deliveryType
}
/>
</>
)
}
</>
)
}
target=
"/memberCenter/afterService/returnApplication/returnPrDeliver"
isEditRefundDeliver
/>
</>
);
...
...
src/pages/afterService/returnManage/returnPrReceived/verify.tsx
View file @
297800e2
...
...
@@ -63,7 +63,6 @@ const ReturnPrReceivedVerify: React.FC = () => {
</
Button
>
<
ManualDeliveryModal
key=
"2"
value=
{
{
deliveryAddressTxt
:
manualReturnGoodsAddress
.
deliveryAddress
,
deliveryTime
:
manualReturnGoodsAddress
.
deliveryTime
,
...
...
@@ -74,6 +73,7 @@ const ReturnPrReceivedVerify: React.FC = () => {
confirmLoading=
{
submitLoading
}
onSubmit=
{
handleSubmit
}
onVisible=
{
handleVisible
}
deliveryType=
{
info
.
returnGoodsAddress
.
deliveryType
}
isEdit=
{
false
}
/>
</>
...
...
src/pages/member/components/BasicInfo/index.tsx
View file @
297800e2
...
...
@@ -79,7 +79,7 @@ const BasicInfo: React.FC<BasicInfoProps> = ({
<
Descriptions
.
Item
label=
"渠道级别"
>
{
channel
.
level
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"渠道类型"
>
{
channel
.
type
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"代理地市"
>
<
Row
gutter=
{
[
16
,
16
]
}
>
<
Row
gutter=
{
[
16
,
16
]
}
style=
{
{
flex
:
1
}
}
>
{
channel
.
areas
?
channel
.
areas
.
map
(
item
=>
(
...
...
src/pages/member/memberQuery/index.tsx
View file @
297800e2
...
...
@@ -14,6 +14,7 @@ import {
DownOutlined
,
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
...
...
@@ -54,7 +55,16 @@ const MemberQuery: React.FC<{}> = () => {
const
[
confirmLoading
,
setConfirmLoading
]
=
useState
(
false
);
const
fetchData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityInfoPage
(
params
);
const
{
startDate
=
null
,
endDate
=
null
}
=
params
;
const
payload
=
{
...
params
};
if
(
startDate
)
{
payload
.
startDate
=
moment
(
+
startDate
).
format
(
'YYYY-MM-DD'
);
}
if
(
endDate
)
{
payload
.
endDate
=
moment
(
+
endDate
).
format
(
'YYYY-MM-DD'
);
}
let
res
=
await
PublicApi
.
getMemberAbilityInfoPage
(
payload
);
return
res
.
data
;
};
...
...
src/pages/transaction/stockSellStorage/bills/components/BillsForm/effects/useBusinessEffects.ts
View file @
297800e2
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-16 15:16:47
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-03-
02 14:30:30
* @LastEditTime: 2021-03-
19 15:34:43
* @Description: 联动逻辑相关
*/
import
{
Modal
,
message
}
from
'antd'
;
...
...
@@ -539,7 +539,7 @@ export const useBusinessEffects = (context, actions) => {
// 这里判断是否货品 跟 商品 都已经选择过了,不可重复选择
const
sameGood
=
invoicesDetailsRequestsValue
.
find
((
item
,
index
)
=>
index
!==
+
itemIndex
&&
item
.
itemNo
===
itemNoValue
&&
item
.
product
===
value
);
if
(
sameGood
)
{
message
.
warning
(
'存在相同货
号
+商品的组合,请重新选择'
);
message
.
warning
(
'存在相同货
品
+商品的组合,请重新选择'
);
setTimeout
(()
=>
{
setFieldState
(
FormPath
.
transform
(
name
,
/
\d
/
,
$1
=>
{
...
...
src/pages/transaction/stockSellStorage/bills/components/BillsForm/index.tsx
View file @
297800e2
...
...
@@ -69,7 +69,7 @@ interface BillsFormProps {
*/
relevanceInvoices
:
string
;
/**
*
单据id,可能是待新增销售发货单,待新增采购入库单跳转过来的
*
对应的单据id,用于查询必要的数据所需
*/
relevanceInvoicesId
:
string
;
/**
...
...
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