Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
founder_vue
Overview
Overview
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
常超
founder_vue
Commits
da79317e
Commit
da79317e
authored
Jan 19, 2022
by
张超军
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev_zwpt' of
http://39.99.224.27:9022/changchao/founder_vue
into dev_zwpt
parents
f21543c2
298e7294
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
348 additions
and
71 deletions
+348
-71
src/utils/UserUtil.js
+5
-1
src/views/Home.vue
+219
-54
src/views/Home/Home.vue
+88
-2
src/views/bzxxgl/bzxxsh.vue
+7
-3
src/views/xtfkgl/AjXtljfkView.vue
+2
-2
src/views/xtfkgl/RyXtljfkView.vue
+2
-2
src/views/xtfkgl/scss/dialog_table.scss
+23
-7
src/views/zljc/Index.vue
+2
-0
No files found.
src/utils/UserUtil.js
View file @
da79317e
...
...
@@ -31,9 +31,13 @@ export default {
getUser
()
{
// 获取用户信息
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
_USER_INFO_KEY
))
logger
.
info
(
'userInfo'
,
userInfo
)
return
userInfo
return
userInfo
.
user
},
getUserGroupId
()
{
// 获取用户信息
let
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
_USER_INFO_KEY
))
return
userInfo
.
groupIds
},
setUser
(
userInfo
)
{
// 保存用户信息
localStorage
.
setItem
(
_USER_INFO_KEY
,
JSON
.
stringify
(
userInfo
))
},
...
...
src/views/Home.vue
View file @
da79317e
<
template
>
<div
id=
"home-div"
>
<div
id=
"home"
:class=
"
{ zhanshi: isCropper || loading_sd }">
<div
id=
"home"
:class=
"
{ zhanshi: isCropper || loading_sd }"
>
<el-container
class=
"layout-container"
>
<transition
name=
"slide"
>
<el-aside
:width=
"isCollapse ? '4rem' : '17.5rem'"
class=
"aside"
>
<el-aside
:width=
"isCollapse ? '4rem' : '17.5rem'"
class=
"aside"
>
<div
class=
"logo"
:class=
"
{ minLogo: isCollapse }"
@click="$router.push('/index')"
v-if="this.$store.state.tm.tmType == false"
>
<img
class=
"jh"
src=
"../assets/img/Home/jh.png"
alt=
""
/>
<img
class=
"jh"
src=
"../assets/img/Home/jh.png"
alt=
""
/>
<img
v-show=
"!isCollapse"
class=
"title"
...
...
@@ -54,7 +64,10 @@
@
select=
"selectPath"
:unique-opened=
"true"
>
<div
v-for=
"(menu, i) in routes"
:key=
"i"
>
<div
v-for=
"(menu, i) in routes"
:key=
"i"
>
<el-submenu
:index=
"menu.name"
v-if=
"menu.children && !menu.hidden"
...
...
@@ -65,12 +78,21 @@
:src=
"menu.icon_d"
alt=
""
/>
<img
v-else
:src=
"menu.icon_a"
alt=
""
/>
<img
v-else
:src=
"menu.icon_a"
alt=
""
/>
<span
v-show=
"!isCollapse"
>
{{
menu
.
meta
.
title
}}
</span>
</
template
>
<div
v-for=
"(item, index) in menu.children"
:key=
"index"
>
<el-menu-item
v-if=
"!item.hidden"
:index=
"item.name"
>
{{ item.meta.title }}
<div
v-for=
"(item, index) in menu.children"
:key=
"index"
>
<el-menu-item
v-if=
"!item.hidden"
:index=
"item.name"
>
{{ item.meta.title }}
</el-menu-item>
</div>
</el-submenu>
...
...
@@ -83,7 +105,11 @@
:src=
"menu.icon_d"
alt=
""
/>
<img
v-else
:src=
"menu.icon_a"
alt=
""
/>
<img
v-else
:src=
"menu.icon_a"
alt=
""
/>
<span
slot=
"title"
>
{{ menu.meta.title }}
</span>
</el-menu-item>
</div>
...
...
@@ -94,15 +120,30 @@
src=
"../assets/img/Home/logo.png"
alt=
""
/>
<img
v-else
src=
"../assets/img/Home/fang.png"
alt=
""
/>
<img
v-else
src=
"../assets/img/Home/fang.png"
alt=
""
/>
</div>
</el-aside>
</transition>
<el-container
class=
"container-dom"
>
<el-header
class=
"header"
>
<div
class=
"collapse"
@
click=
"switchCollapse"
>
<img
v-if=
"isCollapse"
:src=
"rightImg"
alt=
""
/>
<img
v-else
:src=
"leftImg"
alt=
""
/>
<div
class=
"collapse"
@
click=
"switchCollapse"
>
<img
v-if=
"isCollapse"
:src=
"rightImg"
alt=
""
/>
<img
v-else
:src=
"leftImg"
alt=
""
/>
</div>
<el-tabs
class=
"tabs"
...
...
@@ -126,8 +167,14 @@
<div
class=
"message"
>
<div
class=
"circle"
></div>
</div>
<div
class=
"quit"
@
click=
"$router.push('/index')"
></div>
<div
class=
"logout"
@
click=
"logout"
>
<div
class=
"quit"
@
click=
"$router.push('/index')"
></div>
<div
class=
"logout"
@
click=
"logout"
>
<svg-icon
v-show=
"!isHoverLogout"
icon-class=
"logout_d"
...
...
@@ -187,33 +234,89 @@
>
<span>
当前页面有未保存的指位特征,是否退出?
</span>
<div
class=
"dialog-footer"
>
<button
class=
"confirm-btn"
@
click=
"confirmJumpRoute"
>
是
</button>
<button
class=
"cancel-btn"
@
click=
"cancelJumpRoute"
>
否
</button>
<button
class=
"confirm-btn"
@
click=
"confirmJumpRoute"
>
是
</button>
<button
class=
"cancel-btn"
@
click=
"cancelJumpRoute"
>
否
</button>
</div>
</el-dialog>
<div
class=
"shadow"
v-show=
"isCropper"
></div>
<div
class=
"loading"
v-show=
"loading_sd"
>
<div
class=
"shadow"
v-show=
"isCropper"
></div>
<div
class=
"loading"
v-show=
"loading_sd"
>
<div
class=
"loading-finger"
>
<img
src=
"../assets/img/loadingfinger.gif"
alt=
""
/>
<img
src=
"../assets/img/loadingfinger.gif"
alt=
""
/>
</div>
<div
class=
"loading-name"
>
<img
src=
"../assets/img/loadingtxt.gif"
alt=
""
/>
<img
src=
"../assets/img/loadingtxt.gif"
alt=
""
/>
</div>
</div>
<div
class=
"smallLoading"
v-show=
"smallLoading"
>
<div
class=
"smallLoading"
v-show=
"smallLoading"
>
<div
class=
"loading-finger"
>
<img
src=
"../assets/img/loadingfinger.gif"
alt=
""
/>
<img
src=
"../assets/img/loadingfinger.gif"
alt=
""
/>
</div>
<div
class=
"loading-name"
>
<img
src=
"../assets/img/loadingtxt.gif"
alt=
""
/>
<img
src=
"../assets/img/loadingtxt.gif"
alt=
""
/>
</div>
</div>
<el-dialog
class=
'exitDialog'
title=
"退出系统"
:visible
.
sync=
"dialogVisible"
:append-to-body=
'true'
:modal-append-to-body=
"false"
:close-on-click-modal=
'false'
:before-close=
'closeDialog'
:modal=
'false'
width=
"25rem"
>
<span>
您确认要退出系统吗?
</span>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"exit"
class=
'qr'
>
确 认
</el-button>
<el-button
@
click=
"closeDialog"
class=
'qx'
>
取 消
</el-button>
</span>
</el-dialog>
<!-- 人像 -->
<transition
name=
"el-fade-in-linear"
>
<div
class=
"face-big"
v-show=
"enLargeFace"
>
<div
class=
"face-big"
v-show=
"enLargeFace"
>
<div
class=
"face-name"
>
{{ rxInfoEnlarge.name }}
</div>
<img
class=
"face-img"
...
...
@@ -235,7 +338,7 @@ import utils from "@/utils/util.js";
export
default
{
name
:
"Home"
,
data
()
{
data
()
{
return
{
searchTxt
:
""
,
routes
:
this
.
$store
.
getters
[
"layout/leftMenuData"
],
...
...
@@ -257,9 +360,10 @@ export default {
// 人像信息
rxInfoEnlarge
:
{},
// isStRole: false,
dialogVisible
:
false
,
// 退出弹窗状态
};
},
mounted
()
{
mounted
()
{
console
.
log
(
this
.
routes
);
console
.
log
(
this
.
loading_sd
);
this
.
$store
.
commit
(
"loading/setLoadingSd"
,
false
);
...
...
@@ -298,7 +402,7 @@ export default {
// this.isStRole = user.isStRole()
},
updated
()
{
updated
()
{
this
.
menuActive
=
this
.
$route
.
name
;
},
computed
:
{
...
...
@@ -312,7 +416,7 @@ export default {
enLargeFace
:
(
state
)
=>
state
.
ryzwbj
.
enLargeFace
,
loading_sd
:
(
state
)
=>
state
.
loading
.
loading_sd
,
}),
cachePageName
()
{
cachePageName
()
{
return
this
.
$store
.
state
.
layout
.
cachePageName
;
},
},
...
...
@@ -330,8 +434,11 @@ export default {
* @param {*}
* @return {*}
*/
logout
()
{
logout
()
{
this
.
dialogVisible
=
true
this
.
$bus
.
emit
(
"isBlur"
,
true
);
},
exit
()
{
this
.
$axios
.
get
(
"/security/logout"
)
.
then
((
res
)
=>
{
...
...
@@ -342,7 +449,11 @@ export default {
this
.
$message
.
info
(
"退出成功!"
);
}
})
.
catch
((
err
)
=>
{});
.
catch
((
err
)
=>
{
});
},
closeDialog
()
{
this
.
dialogVisible
=
false
;
this
.
$bus
.
emit
(
"isBlur"
,
false
);
},
/**
* @description: 开始搜索
...
...
@@ -350,11 +461,11 @@ export default {
* @return {*}
*/
goSearch
()
{
goSearch
()
{
this
.
searchTxt
=
""
;
//console.log(this.searchTxt);
},
handleClick
({
name
})
{
handleClick
({
name
})
{
/*
if (
(this.$route.name === 'ryzwbj' || this.$route.name === 'ajzwbj') && !this.jumproute
...
...
@@ -387,7 +498,7 @@ export default {
/**
* 确认需要跳转路由
*/
confirmJumpRoute
()
{
confirmJumpRoute
()
{
// 清除sessionStorage值
sessionStorage
.
clear
();
this
.
isCropper
=
false
;
...
...
@@ -437,13 +548,13 @@ export default {
/**
* 取消跳转路由
*/
cancelJumpRoute
()
{
cancelJumpRoute
()
{
this
.
jumpRouteDialogVisible
=
false
;
this
.
isCropper
=
false
;
this
.
routePath
=
this
.
$route
.
name
;
this
.
menuActive
=
""
;
},
tabRemove
(
name
)
{
tabRemove
(
name
)
{
if
(
name
!=
"ryzwbj"
&&
name
!=
"ajzwbj"
)
{
let
routerObj
=
this
.
paths
.
find
((
i
)
=>
i
.
routeName
==
name
);
if
(
routerObj
)
{
...
...
@@ -516,7 +627,7 @@ export default {
}
}
},
setKeepAlive
()
{
setKeepAlive
()
{
let
cachePageName
;
if
(
JSON
.
parse
(
utils
.
Decrypt
(
sessionStorage
.
getItem
(
"crumbs"
))).
length
>
0
...
...
@@ -540,7 +651,7 @@ export default {
* @param {*}
* @return {*}
*/
goManager
()
{
goManager
()
{
this
.
$router
.
push
(
"/Home/htzwcj"
);
this
.
menuActive
=
""
;
},
...
...
@@ -550,7 +661,7 @@ export default {
* @param {*} path
* @return {*}
*/
selectPath
(
index
,
path
)
{
selectPath
(
index
,
path
)
{
console
.
log
(
index
);
console
.
log
(
path
);
if
(
path
==
"zzwcj"
)
{
...
...
@@ -581,7 +692,7 @@ export default {
* @param {*}
* @return {*}
*/
closePaths
(
pathName
)
{
closePaths
(
pathName
)
{
let
res
=
this
.
paths
.
filter
((
item
)
=>
{
return
item
.
name
!=
pathName
;
});
...
...
@@ -597,7 +708,7 @@ export default {
* @param {*}
* @return {*}
*/
changeRouter
(
route
)
{
changeRouter
(
route
)
{
this
.
$router
.
push
(
route
.
path
);
this
.
menuActive
=
route
.
routeName
;
},
...
...
@@ -606,25 +717,25 @@ export default {
* @param {*}
* @return {*}
*/
switchCollapse
()
{
switchCollapse
()
{
this
.
isCollapse
=
!
this
.
isCollapse
;
},
handleOpen
(
key
,
keyPath
)
{
handleOpen
(
key
,
keyPath
)
{
//console.log(key, keyPath);
},
handleClose
(
key
,
keyPath
)
{
handleClose
(
key
,
keyPath
)
{
//console.log(key, keyPath);
},
},
beforeDestroy
()
{
beforeDestroy
()
{
//组件销毁前需要解绑事件。否则会出现重复触发事件的问题
},
watch
:
{
enLargeFace
(
newValue
,
oldValue
)
{
},
menuActive
(
newValue
,
oldValue
)
{
},
loading
(
newValue
,
oldValue
)
{
},
enLargeFace
(
newValue
,
oldValue
)
{
},
menuActive
(
newValue
,
oldValue
)
{
},
loading
(
newValue
,
oldValue
)
{
},
$route
:
{
handler
(
newValue
,
oldValue
)
{
handler
(
newValue
,
oldValue
)
{
// console.log(oldValue);
// 如果是人员指纹编辑界面或者是案件指纹编辑界面,进行判断是否跳转
// if(oldValue.name === 'ryzwbj' || oldValue.name === 'ajzwbj') {
...
...
@@ -665,7 +776,7 @@ export default {
immediate
:
true
,
},
},
created
()
{
created
()
{
this
.
paths
=
sessionStorage
.
getItem
(
"crumbs"
)
?
JSON
.
parse
(
utils
.
Decrypt
(
sessionStorage
.
getItem
(
"crumbs"
)))
:
[];
...
...
@@ -1016,9 +1127,6 @@ export default {
//
border-radius
:
16px
;
//
}
}
.el-tabs__item.is-top.is-closable
{
//
padding
:
6px
24px
;
}
.el-tabs__nav-next
{
display
:
inline-block
;
...
...
@@ -1449,5 +1557,61 @@ export default {
cursor
:
pointer
;
}
}
//
退出
/
deep
/
.el-dialog
{
display
:
flex
;
flex-direction
:
column
;
margin
:
0
!important
;
position
:
absolute
;
top
:
40%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
/*height:600px;*/
max-height
:
calc
(
100%
-
30px
);
max-width
:
calc
(
100%
-
30px
);
}
.exitDialog
{
/deep/.el-dialog__header
{
padding
:
15px
24px
13px
;
font-size
:
16px
;
font-family
:
HarmonyOS_Sans_SC
;
color
:
#282f3c
;
border-bottom
:
1px
solid
#eeeeee
;
}
/
deep
/
.el-dialog__body
{
padding
:
30px
0
24px
;
text-align
:
center
;
}
/
deep
/
.el-dialog__footer
{
padding
:
0
0
30px
0
;
.dialog-footer
{
margin-top
:
0
;
}
.qr
{
width
:
72px
;
height
:
40px
;
background
:
#ffffff
;
border-radius
:
4px
;
border
:
1px
solid
#aeb5c2
;
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#2e3846
;
margin
:
0
;
margin-right
:
12px
;
}
.qx
{
width
:
72px
;
height
:
40px
;
background
:
#055fe7
;
border-radius
:
4px
;
border
:
1px
solid
#055fe7
;
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#fff
;
margin
:
0
;
margin-left
:
12px
;
}
}
}
//
@import
"@/assets/css/globalBase.scss"
;
</
style
>
\ No newline at end of file
src/views/Home/Home.vue
View file @
da79317e
...
...
@@ -222,6 +222,31 @@
</div>
</div>
</div>
<el-dialog
class=
'exitDialog'
title=
"退出系统"
:visible
.
sync=
"dialogVisible"
:append-to-body=
'true'
:modal-append-to-body=
"false"
:close-on-click-modal=
'false'
:modal=
'false'
width=
"25rem"
>
<span>
您确认要退出系统吗?
</span>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"exit"
class=
'qr'
>
确 认
</el-button>
<el-button
@
click=
"dialogVisible=false"
class=
'qx'
>
取 消
</el-button>
</span>
</el-dialog>
</div>
</
template
>
...
...
@@ -237,6 +262,8 @@ export default {
zljcNum
:
0
,
sbAppNum
:
0
,
dfzwNum
:
0
,
dialogVisible
:
false
,
// 退出弹窗状态
};
},
methods
:
{
...
...
@@ -315,6 +342,9 @@ export default {
this
.
$router
.
pushToTab
(
"/bzxxfh"
);
},
logout
()
{
this
.
dialogVisible
=
true
},
exit
()
{
this
.
$axios
.
get
(
"/security/logout"
)
.
then
((
res
)
=>
{
...
...
@@ -456,8 +486,6 @@ export default {
this
.
userInfo
=
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
));
console
.
log
(
this
.
userInfo
);
this
.
getHomeNum
();
},
computed
:
{
...
...
@@ -881,4 +909,62 @@ export default {
bottom
/
70px
87px
,
linear-gradient
(
133deg
,
#42bbf2
0%
,
#12a1e5
100%
);
}
//
退出
/
deep
/
.el-dialog
{
display
:
flex
;
flex-direction
:
column
;
margin
:
0
!important
;
position
:
absolute
;
top
:
40%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
/*height:600px;*/
max-height
:
calc
(
100%
-
30px
);
max-width
:
calc
(
100%
-
30px
);
}
.exitDialog
{
/deep/.el-dialog__header
{
padding
:
15px
24px
13px
;
font-size
:
16px
;
font-family
:
HarmonyOS_Sans_SC
;
color
:
#282f3c
;
border-bottom
:
1px
solid
#eeeeee
;
}
/
deep
/
.el-dialog__body
{
padding
:
30px
0
24px
;
text-align
:
center
;
}
/
deep
/
.el-dialog__footer
{
display
:
flex
;
justify-content
:
center
;
padding
:
0
0
30px
0
;
.dialog-footer
{
margin-top
:
0
;
}
.qr
{
width
:
72px
;
height
:
40px
;
background
:
#ffffff
;
border-radius
:
4px
;
border
:
1px
solid
#aeb5c2
;
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#2e3846
;
margin
:
0
;
margin-right
:
12px
;
}
.qx
{
width
:
72px
;
height
:
40px
;
background
:
#055fe7
;
border-radius
:
4px
;
border
:
1px
solid
#055fe7
;
font-size
:
14px
;
font-family
:
MicrosoftYaHei
;
color
:
#fff
;
margin
:
0
;
margin-left
:
12px
;
}
}
}
</
style
>
src/views/bzxxgl/bzxxsh.vue
View file @
da79317e
...
...
@@ -413,9 +413,9 @@ export default {
},
shDialogVisiable
:
false
,
dwProps
:
{
value
:
"code"
,
label
:
"key"
,
children
:
"childCodeDwXz"
,
value
:
'code'
,
label
:
'key'
,
children
:
'childCodeDwXz'
,
checkStrictly
:
true
,
emitPath
:
false
,
},
...
...
@@ -712,6 +712,10 @@ export default {
_that
.
ruleForm
.
level
=
_that
.
getLevel
()
_that
.
ruleForm
.
userId
=
user
.
getUser
().
id
_that
.
ruleForm
.
userGroupIds
=
user
.
getUserGroupId
()
NetUtil
.
bzxxsh
.
shList
(
_that
.
ruleForm
)
.
then
(
res
=>
{
if
(
res
.
code
===
0
)
{
...
...
src/views/xtfkgl/AjXtljfkView.vue
View file @
da79317e
...
...
@@ -349,8 +349,8 @@ export default {
ruleForm
.
page
=
page
ruleForm
.
limit
=
limit
ruleForm
.
userId
=
user
.
getUser
().
user
.
id
ruleForm
.
userGroupIds
=
user
.
getUser
().
groupIds
ruleForm
.
userId
=
user
.
getUser
().
id
ruleForm
.
userGroupIds
=
user
.
getUser
GroupId
()
NetUtil
.
xtfkgl
.
ajList
(
ruleForm
)
...
...
src/views/xtfkgl/RyXtljfkView.vue
View file @
da79317e
...
...
@@ -353,8 +353,8 @@ export default {
ruleForm
.
page
=
page
ruleForm
.
limit
=
limit
ruleForm
.
userId
=
user
.
getUser
().
user
.
id
ruleForm
.
userGroupIds
=
user
.
getUser
().
groupIds
ruleForm
.
userId
=
user
.
getUser
().
id
ruleForm
.
userGroupIds
=
user
.
getUser
GroupId
()
logger
.
info
(
'user'
,
user
.
getUser
())
...
...
src/views/xtfkgl/scss/dialog_table.scss
View file @
da79317e
...
...
@@ -121,6 +121,14 @@
color
:
#e60012
;
box-shadow
:
0px
6px
10px
2px
rgba
(
0
,
21
,
51
,
0
.06
);
}
/
deep
/
.el-form-item__label
{
&
:
:
before
{
position
:
absolute
;
left
:
-10px
;
//transform: translateY(-70px);
}
}
}
.input-item-sm
{
...
...
@@ -135,8 +143,7 @@
background
:
#F6F8FA
;
box-shadow
:
0px
1px
2px
0px
rgba
(
5
,
95
,
231
,
0
.18
);
border-radius
:
4px
;
border
:
1px
solid
#EEEEEE
;
background
:
black
;
border
:
0px
solid
#EEEEEE
;
}
/
deep
/
.el-input__inner
{
...
...
@@ -151,6 +158,15 @@
border-radius
:
4px
;
border
:
1px
solid
#EEEEEE
;
}
.el-form-item__label
{
&
:
:
before
{
position
:
absolute
;
left
:
0px
;
//transform: translateX(70px);
}
}
}
...
...
@@ -537,11 +553,11 @@
font-family
:
HarmonyOS_Sans_SC
;
color
:
#333333
;
&
:
:
before
{
position
:
absolute
;
left
:
-10px
;
//transform: translateY(3
px);
}
//
&::before {
//
position: absolute;
//
left: -10px;
// transform: translateY(-70
px);
//
}
}
.is-error
{
...
...
src/views/zljc/Index.vue
View file @
da79317e
...
...
@@ -387,6 +387,8 @@ export default {
inspectionFlag
:
null
,
// 检查结果选择
codeDwCode
:
""
,
// 捺印单位
type
:
""
,
// 倒计时排序
userId
:
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
)).
user
.
id
,
userGroupIds
:
JSON
.
parse
(
localStorage
.
getItem
(
"userInfo"
)).
groupIds
};
reqParam
.
page
=
this
.
currPage
;
reqParam
.
limit
=
this
.
currentPageSize
;
...
...
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