Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
T
techbook
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
front-end-dev
techbook
Commits
3e84f5a7
Commit
3e84f5a7
authored
Jan 14, 2021
by
zhangyanni
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
a857851b
7ff699b0
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
79 additions
and
13 deletions
+79
-13
PageTopindex.vue
src/components/index/PageTopindex.vue
+12
-5
minPageTopindex.vue
src/components/index/minPageTopindex.vue
+7
-3
requireDetail.vue
src/views/bigbusiness/pages/requireDetail.vue
+1
-1
eventdetail.vue
src/views/findeventpage/eventdetail.vue
+18
-0
eventlive.vue
src/views/findeventpage/eventlive.vue
+1
-1
eventpage.vue
src/views/findeventpage/eventpage.vue
+18
-0
index.vue
src/views/index/pages/index.vue
+19
-0
peoplehome.vue
src/views/peoplehomepage/peoplehome.vue
+2
-2
topicdetail.vue
src/views/topicpage/topicdetail.vue
+1
-1
No files found.
src/components/index/PageTopindex.vue
View file @
3e84f5a7
...
...
@@ -16,11 +16,11 @@
ref=
"popoverKey"
popper-class=
"indextop_popover"
>
<div
class=
"userInfo_popover"
style=
"position: relative;top: -13px;left: -172px;"
>
<searchTopbar
@
search=
"search"
></searchTopbar>
<searchTopbar
v-if=
"ispopoverKey"
@
search=
"search"
></searchTopbar>
</div>
</el-popover>
<el-input
v-if=
"$i18n.locale == 'zh-CN'"
class=
"index_search"
v-popover:popoverKey
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
v-model
.
trim=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
:style=
"$i18n.locale == 'zh-CN'?'width: 470px;':'width: 350px;'"
></el-input>
<el-input
v-else
class=
"index_search"
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
v-model
.
trim=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
:style=
"$i18n.locale == 'zh-CN'?'width: 470px;':'width: 350px;'"
></el-input>
<el-input
v-if=
"$i18n.locale == 'zh-CN'"
class=
"index_search"
@
focus=
"ispopoverKey=true"
v-popover:popoverKey
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
v-model
.
trim=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
:style=
"$i18n.locale == 'zh-CN'?'width: 470px;':'width: 350px;'"
></el-input>
<el-input
v-else
class=
"index_search"
@
focus=
"ispopoverKey=true"
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
v-model
.
trim=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
:style=
"$i18n.locale == 'zh-CN'?'width: 470px;':'width: 350px;'"
></el-input>
<p
class=
"topsearch"
type=
"primary"
@
click=
"handleSearchDetail(keyword)"
>
{{
$t
(
"searchResult.search"
)
}}
</p>
<!--
<p
class=
"recommend"
>
-->
<!--
<span
@
click=
"handleSearchDetail(item)"
v-for=
"item in keywordlist"
style=
"margin-right: 10px;cursor: pointer;"
>
{{
item
}}
</span>
-->
...
...
@@ -81,10 +81,10 @@
</div>
<div
class=
"top_fixed_title istop_fixed_title"
:class=
"isltrIndex?'ltrIndex_title':''"
v-if=
"positions||isltrIndex"
>
<minPageTopindex
@
topFixedvisible=
"topFixedvisible"
:tabpath=
"tabpath"
:isltrIndex=
"isltrIndex"
:indextab=
"indextab"
:messageCount=
"messageCount"
:empOtherName=
"empOtherName"
:empLogo=
"empLogo"
:navuserInfo=
"navuserInfo"
></minPageTopindex>
<minPageTopindex
@
topFixedvisible=
"topFixedvisible"
@
outlogin=
"outlogin"
:tabpath=
"tabpath"
:isltrIndex=
"isltrIndex"
:indextab=
"indextab"
:messageCount=
"messageCount"
:empOtherName=
"empOtherName"
:empLogo=
"empLogo"
:navuserInfo=
"navuserInfo"
></minPageTopindex>
</div>
<div
class=
"top_fixed_title"
:class=
"isltrIndex?'ltrIndex_title':''"
v-if=
"isTops&&!isltrIndex"
>
<minPageTopindex
@
topFixedvisible=
"topFixedvisible"
:tabpath=
"tabpath"
:isltrIndex=
"isltrIndex"
:indextab=
"indextab"
:messageCount=
"messageCount"
:empOtherName=
"empOtherName"
:empLogo=
"empLogo"
:navuserInfo=
"navuserInfo"
></minPageTopindex>
<minPageTopindex
@
topFixedvisible=
"topFixedvisible"
@
outlogin=
"outlogin"
:tabpath=
"tabpath"
:isltrIndex=
"isltrIndex"
:indextab=
"indextab"
:messageCount=
"messageCount"
:empOtherName=
"empOtherName"
:empLogo=
"empLogo"
:navuserInfo=
"navuserInfo"
></minPageTopindex>
</div>
<!--抽屉-->
...
...
@@ -203,6 +203,7 @@
userInfoenvisible
:
false
,
userInfoenvisible_fixed
:
false
,
isTops
:
false
,
ispopoverKey
:
false
,
hrefweb
:
"https://open.weixin.qq.com/connect/qrconnect?appid=wxf7c7984d24495e1d&redirect_uri="
+
encodeURIComponent
(
this
.
publicFun
.
getCurrentHrefEnv
()
+
'#/pcauth'
)
+
"&response_type=code&scope=snsapi_login&state=#wechat_redirect"
,
}
},
...
...
@@ -216,6 +217,7 @@
// this.$refs.popoverKey.doShow();
this
.
handleSearchDetail
(
val
);
this
.
$refs
.
popoverKey
.
doClose
();
this
.
ispopoverKey
=
false
;
},
//微信授权
wxopenlogin
(){
...
...
@@ -341,6 +343,7 @@
this
.
$store
.
dispatch
(
'saveSearchResultKeyword'
,{
path
:
this
.
$route
.
path
,
pars
:
data
});
this
.
$router
.
push
({
path
:
this
.
$i18n
.
locale
==
'zh-CN'
?
"/keySearchs"
:
"/search"
,
query
:{
key
:
this
.
Base64
.
encode
(
data
)}});
globalMsg
.
$emit
(
"sendResultData"
,
data
);
this
.
ispopoverKey
=
false
;
}
},
menu
(){
...
...
@@ -390,6 +393,10 @@
this
.
$message
.
error
(
err
);
})
},
outlogin
(){
globalMsg
.
$emit
(
'loginout'
);
this
.
userInfo
=
this
.
publicFun
.
getUserInfoCookieType
()
?
JSON
.
parse
(
this
.
Base64
.
decode
(
this
.
publicFun
.
getUserInfoCookieType
()))
:
null
;
},
},
beforeDestroy
()
{
// 在组件生命周期结束的时候销毁。
window
.
removeEventListener
(
'scroll'
,
this
.
menu
);
...
...
src/components/index/minPageTopindex.vue
View file @
3e84f5a7
...
...
@@ -18,11 +18,11 @@
ref=
"popoverKey"
popper-class=
"indextop_popover"
>
<div
class=
"userInfo_popover"
style=
"position: relative;top: -13px;left: -47px;"
>
<searchTopbar
@
search=
"search"
></searchTopbar>
<searchTopbar
v-if=
"ispopoverKey"
@
search=
"search"
></searchTopbar>
</div>
</el-popover>
<el-input
class=
"index_topsou"
v-if=
"$i18n.locale == 'zh-CN'"
v-popover:popoverKey
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
@
focus=
"keyword_search = true"
@
blur=
"keyword_search = false"
v-model=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
style=
"width: 220px;height: 30px;"
></el-input>
<el-input
class=
"index_topsou"
v-else
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
@
focus=
"keyword_search = true"
@
blur=
"keyword_search = false"
v-model=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
style=
"width: 220px;height: 30px;"
></el-input>
<el-input
class=
"index_topsou"
v-if=
"$i18n.locale == 'zh-CN'"
v-popover:popoverKey
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
@
focus=
"keyword_search = true
,ispopoverKey=true
"
@
blur=
"keyword_search = false"
v-model=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
style=
"width: 220px;height: 30px;"
></el-input>
<el-input
class=
"index_topsou"
v-else
@
keyup
.
enter
.
native=
"handleSearchDetail(keyword)"
@
focus=
"keyword_search = true
,ispopoverKey=true
"
@
blur=
"keyword_search = false"
v-model=
"keyword"
maxlength=
"40"
:placeholder=
"$t('commonTitle.searchKeyword')"
style=
"width: 220px;height: 30px;"
></el-input>
<p
class=
"topsearch_fixed"
type=
"primary"
:style=
"!keyword_search&&keyword==''?'':'background: #5D78FF'"
@
click=
"handleSearchDetail(keyword)"
>
<i
style=
"font-size: 12px;"
:style=
"!keyword_search&&keyword==''?'':'color:#ffffff'"
class=
"iconfont icon-iconsearch"
></i>
</p>
...
...
@@ -92,6 +92,7 @@
userInfoenvisible
:
false
,
userInfoenvisible_fixed
:
false
,
envisible
:
false
,
ispopoverKey
:
false
,
userInfo
:
this
.
publicFun
.
getUserInfoCookieType
()
?
JSON
.
parse
(
this
.
Base64
.
decode
(
this
.
publicFun
.
getUserInfoCookieType
()))
:
null
,
hrefweb
:
"https://open.weixin.qq.com/connect/qrconnect?appid=wxf7c7984d24495e1d&redirect_uri="
+
encodeURIComponent
(
this
.
publicFun
.
getCurrentHrefEnv
()
+
'#/pcauth'
)
+
"&response_type=code&scope=snsapi_login&state=#wechat_redirect"
,
}
...
...
@@ -104,6 +105,7 @@
// this.$refs.popoverKey.doShow();
this
.
handleSearchDetail
(
val
);
this
.
$refs
.
popoverKey
.
doClose
();
this
.
ispopoverKey
=
false
;
},
handleClick
(
data
,
index
)
{
this
.
index_hover
=
data
.
id
;
...
...
@@ -119,6 +121,7 @@
this
.
$store
.
dispatch
(
'saveSearchResultKeyword'
,{
path
:
this
.
$route
.
path
,
pars
:
data
});
this
.
$router
.
push
({
path
:
this
.
$i18n
.
locale
==
'zh-CN'
?
"/keySearchs"
:
"/search"
,
query
:{
key
:
this
.
Base64
.
encode
(
data
)}});
globalMsg
.
$emit
(
"sendResultData"
,
data
);
this
.
ispopoverKey
=
false
;
}
},
//登录
...
...
@@ -189,6 +192,7 @@
this
.
publicFun
.
removeCookieType
();
that
.
$router
.
push
(
"/"
);
this
.
userInfo
=
this
.
publicFun
.
getUserInfoCookieType
()
?
JSON
.
parse
(
this
.
Base64
.
decode
(
this
.
publicFun
.
getUserInfoCookieType
()))
:
null
;
this
.
$emit
(
'outlogin'
)
}
else
{
that
.
$message
.
error
(
res
.
msg
);
}
...
...
src/views/bigbusiness/pages/requireDetail.vue
View file @
3e84f5a7
<
template
>
<div
style=
"overflow: unset !important;"
>
<div
style=
"overflow: unset !important;
margin-top: 44px;
"
>
<div
class=
"detailWrapper"
>
<div
class=
"basicInfoWrap"
v-if=
"companyInfo"
ref=
"basicInfo"
>
<basicInfoCmpt
:companyInfo=
"companyInfo"
v-if=
"companyInfo"
:isTrans=
"isTrans"
:requireInfo=
"detailInfo"
:isRequireList=
'2'
:require=
"1"
></basicInfoCmpt>
...
...
src/views/findeventpage/eventdetail.vue
View file @
3e84f5a7
...
...
@@ -101,6 +101,7 @@
import
qrCmpt
from
"../../components/common/qrcodeCmpt"
;
import
expertVisible
from
"../../components/login/quicklogin"
;
import
VueQRCodeComponent
from
"vue-qrcode-component"
;
import
uertApi
from
"../mobile/activityApply/api"
;
export
default
{
name
:
"eventdetail"
,
data
()
{
...
...
@@ -116,6 +117,7 @@
url
:
''
,
positions
:
false
,
urltext
:
''
,
newuserinfo
:{},
}
},
components
:{
...
...
@@ -237,6 +239,16 @@
this
.
eventdata
.
channelStartTime
=
this
.
eventdata
.
channelStartTime
.
split
(
" "
)[
0
].
split
(
"-"
)[
1
]
+
"."
+
this
.
eventdata
.
channelStartTime
.
split
(
" "
)[
0
].
split
(
"-"
)[
2
]
+
" "
+
this
.
eventdata
.
channelStartTime
.
split
(
" "
)[
1
].
replace
(
/-/g
,
"."
);
this
.
eventdata
.
channelEndTime
=
this
.
eventdata
.
channelEndTime
.
split
(
" "
)[
0
].
split
(
"-"
)[
1
]
+
"."
+
this
.
eventdata
.
channelEndTime
.
split
(
" "
)[
0
].
split
(
"-"
)[
2
]
+
" "
+
this
.
eventdata
.
channelEndTime
.
split
(
" "
)[
1
].
replace
(
/-/g
,
"."
);
if
(
this
.
userInfo
){
uertApi
.
getUserInfoAxios
(
this
.
userInfo
.
empId
).
then
((
res
)
=>
{
if
(
res
.
code
==
0
){
this
.
newuserinfo
=
{};
this
.
newuserinfo
=
res
.
result
;
}
else
{
this
.
$message
.
error
(
res
.
msg
)
}
}).
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
)
})
api
.
getBasicInfoAxios
(
params
).
then
((
res
)
=>
{
if
(
res
.
code
==
0
)
{
if
(
res
.
result
.
length
>
0
){
...
...
@@ -247,6 +259,12 @@
if
(
data
.
fieldValue
.
charAt
(
0
)
==
'a'
){
arrVal
.
push
(
item
.
fieldValue
);
}
if
(
data
.
fieldValue
==
'contactsCompany'
&&
data
.
isCheck
==
1
&&
this
.
newuserinfo
.
contactsCompany
==
null
){
arrVal
.
push
(
item
.
fieldValue
);
}
if
(
data
.
fieldValue
==
'contactsPosition'
&&
data
.
isCheck
==
1
&&
this
.
newuserinfo
.
contactsPosition
==
null
){
arrVal
.
push
(
item
.
fieldValue
);
}
// if(data.isCheck==1){
// arrVal.push(item.fieldValue);
// }
...
...
src/views/findeventpage/eventlive.vue
View file @
3e84f5a7
...
...
@@ -100,7 +100,7 @@
mounted
()
{
globalMsg
.
$emit
(
'topisInit'
,
false
);
globalMsg
.
$emit
(
'sendIndex'
,
3
);
document
.
getElementsByTagName
(
"body"
)[
0
].
style
.
overflow
=
"hidden"
;
//
document.getElementsByTagName("body")[0].style.overflow = "hidden";
this
.
userHistory
(
0
);
},
beforeDestroy
()
{
// 在组件生命周期结束的时候销毁。、
...
...
src/views/findeventpage/eventpage.vue
View file @
3e84f5a7
...
...
@@ -80,6 +80,7 @@
import
regionChoice
from
"../../components/index/regionchoice"
;
import
expertVisible
from
"../../components/login/quicklogin"
;
import
pageScreen
from
"../../components/index/Pagescreen"
;
import
uertApi
from
"../mobile/activityApply/api"
;
export
default
{
name
:
"eventpage"
,
data
()
{
...
...
@@ -98,6 +99,7 @@
applyVisible
:
false
,
activeName
:
"first"
,
secondStepInfo
:{},
newuserinfo
:{},
userInfo
:
this
.
publicFun
.
getUserInfoCookieType
()
?
JSON
.
parse
(
this
.
Base64
.
decode
(
this
.
publicFun
.
getUserInfoCookieType
()))
:
null
,
}
...
...
@@ -224,6 +226,16 @@
if
(
res
.
code
==
0
){
this
.
detailInfo
=
res
.
result
;
if
(
this
.
userInfo
){
uertApi
.
getUserInfoAxios
(
this
.
userInfo
.
empId
).
then
((
res
)
=>
{
if
(
res
.
code
==
0
){
this
.
newuserinfo
=
{};
this
.
newuserinfo
=
res
.
result
;
}
else
{
this
.
$message
.
error
(
res
.
msg
)
}
}).
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
)
})
api
.
getBasicInfoAxios
(
params
).
then
((
res
)
=>
{
if
(
res
.
code
==
0
)
{
if
(
res
.
result
.
length
>
0
){
...
...
@@ -233,6 +245,12 @@
if
(
data
.
fieldValue
.
charAt
(
0
)
==
'a'
){
arrVal
.
push
(
item
.
fieldValue
);
}
if
(
data
.
fieldValue
==
'contactsCompany'
&&
data
.
isCheck
==
1
&&
this
.
newuserinfo
.
contactsCompany
==
null
){
arrVal
.
push
(
item
.
fieldValue
);
}
if
(
data
.
fieldValue
==
'contactsPosition'
&&
data
.
isCheck
==
1
&&
this
.
newuserinfo
.
contactsPosition
==
null
){
arrVal
.
push
(
item
.
fieldValue
);
}
// if(data.isCheck==1){
// arrVal.push(item.fieldValue);
// }
...
...
src/views/index/pages/index.vue
View file @
3e84f5a7
...
...
@@ -882,6 +882,7 @@
import
expertVisible
from
"../../../components/login/quicklogin"
;
import
signupbar
from
"../../findeventpage/signupbar"
;
import
dialogintegralbar
from
"../../integralpage/dialogintegralbar"
;
import
uertApi
from
"../../mobile/activityApply/api"
;
export
default
{
name
:
"PageTopindex"
,
...
...
@@ -1017,6 +1018,7 @@
wx_type_hover
:
1
,
positions
:
false
,
isgetintegral
:
false
,
newuserinfo
:{},
}
},
components
:
{
...
...
@@ -1324,6 +1326,16 @@
if
(
res
.
code
==
0
){
this
.
detailInfo
=
res
.
result
;
if
(
this
.
userInfo
){
uertApi
.
getUserInfoAxios
(
this
.
userInfo
.
empId
).
then
((
res
)
=>
{
if
(
res
.
code
==
0
){
this
.
newuserinfo
=
{};
this
.
newuserinfo
=
res
.
result
;
}
else
{
this
.
$message
.
error
(
res
.
msg
)
}
}).
catch
((
err
)
=>
{
this
.
$message
.
error
(
err
)
})
api
.
getBasicInfoAxios
(
params
).
then
((
res
)
=>
{
if
(
res
.
code
==
0
)
{
if
(
res
.
result
.
length
>
0
){
...
...
@@ -1333,6 +1345,12 @@
if
(
data
.
fieldValue
.
charAt
(
0
)
==
'a'
){
arrVal
.
push
(
item
.
fieldValue
);
}
if
(
data
.
fieldValue
==
'contactsCompany'
&&
data
.
isCheck
==
1
&&
this
.
newuserinfo
.
contactsCompany
==
null
){
arrVal
.
push
(
item
.
fieldValue
);
}
if
(
data
.
fieldValue
==
'contactsPosition'
&&
data
.
isCheck
==
1
&&
this
.
newuserinfo
.
contactsPosition
==
null
){
arrVal
.
push
(
item
.
fieldValue
);
}
// if(data.isCheck==1){
// arrVal.push(item.fieldValue);
// }
...
...
@@ -1567,6 +1585,7 @@
this
.
getIndexBaseActivity
();
//推荐活动
});
globalMsg
.
$on
(
"loginsuccess"
,(
data
)
=>
{
this
.
userInfo
=
this
.
publicFun
.
getUserInfoCookieType
()
?
JSON
.
parse
(
this
.
Base64
.
decode
(
this
.
publicFun
.
getUserInfoCookieType
()))
:
null
;
this
.
empInfo
=
this
.
publicFun
.
getUserInfoCookieType
()
?
JSON
.
parse
(
this
.
Base64
.
decode
(
this
.
publicFun
.
getUserInfoCookieType
()))
:
null
;
this
.
getIndexHotContentaxios
();
//热门信息
this
.
getIndexBaseActivity
();
//推荐活动
...
...
src/views/peoplehomepage/peoplehome.vue
View file @
3e84f5a7
...
...
@@ -5,12 +5,12 @@
<div
class=
"people_top"
>
<div>
<div
class=
"gendisplay"
>
<p
class=
"imgInfo pbackgtound userImg"
:style=
"
{backgroundImage:'url('+(userInfoData.empLogo?userInfoData.empLogo:require('../../assets/img/defaultlogo.png'))+')'}">
<p
class=
"imgInfo pbackgtound userImg"
style=
"cursor: default"
:style=
"
{backgroundImage:'url('+(userInfoData.empLogo?userInfoData.empLogo:require('../../assets/img/defaultlogo.png'))+')'}">
<img
style=
"width: 20px;right: 10px;"
class=
"userImg_vip"
v-if=
"userInfoData.professor"
src=
"../../assets/img/proFeedBack/vip.png"
alt=
""
>
<img
style=
"width: 20px;right: 10px;"
class=
"userImg_vip"
v-if=
"userInfoData.moderator&&!userInfoData.professor"
src=
"../../assets/img/mobile/moderator.png"
alt=
""
>
</p>
<div
class=
"people_name"
>
<p
class=
"userImg"
>
<p
class=
"userImg"
style=
"cursor: default"
>
<span>
{{
userInfoData
.
empName
}}
</span>
<span
v-if=
"userInfoData.nickName&&userInfoData.nickName.length>=1"
style=
"font-size: 16px;"
>
昵称:
{{
userInfoData
.
nickName
}}
</span>
<img
style=
"width: 18px;right: -35px;top: 14px;"
class=
"userImg_vip"
v-if=
"userInfoData.moderator&&userInfoData.professor"
src=
"../../assets/img/mobile/moderator.png"
alt=
""
>
...
...
src/views/topicpage/topicdetail.vue
View file @
3e84f5a7
...
...
@@ -171,7 +171,7 @@
</div>
</div>
<div>
<div
style=
"margin: 15px 0;color:#1A1A1E;line-height: 24px;"
@
click=
"eventtopiccontent($event)"
>
<div
style=
"margin: 15px 0;color:#1A1A1E;line-height: 24px;
overflow: hidden;
"
@
click=
"eventtopiccontent($event)"
>
<span
v-if=
"item.alltext"
v-html=
"item.pcState==1?(item.discussContentlin+(item.discussContentlin.length>140?'...':'')):publicFun.analyzeEmoji((item.discussContentlin+(item.discussContentlin.length>140?'...':'')))"
></span>
<span
v-else
v-html=
"item.pcState==1?item.discussContentconst:publicFun.analyzeEmoji(item.discussContentconst)"
></span>
<i
...
...
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