Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Q
qk_admin
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
quanku
qk_admin
Commits
23e1441b
Commit
23e1441b
authored
Jul 25, 2023
by
xiaoman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bugfix:钱币分类 keepalive
parent
50fe79b2
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
156 additions
and
73 deletions
+156
-73
src/router/index.js
src/router/index.js
+3
-3
src/views/layout/components/AppMain.vue
src/views/layout/components/AppMain.vue
+1
-1
src/views/mall/category.vue
src/views/mall/category.vue
+149
-66
src/views/mall/dealRecord.vue
src/views/mall/dealRecord.vue
+3
-3
No files found.
src/router/index.js
View file @
23e1441b
...
@@ -160,7 +160,7 @@ export const asyncRouterMap = [
...
@@ -160,7 +160,7 @@ export const asyncRouterMap = [
{
{
path
:
'
infoSet
'
,
path
:
'
infoSet
'
,
component
:
()
=>
import
(
'
@/views/goods/infoSet
'
),
component
:
()
=>
import
(
'
@/views/goods/infoSet
'
),
name
:
'
category
'
,
name
:
'
InfoSet
'
,
meta
:
{
meta
:
{
perms
:
[
'
GET /admin/category/list
'
,
'
POST /admin/category/create
'
,
'
GET /admin/category/read
'
,
'
POST /admin/category/update
'
,
'
POST /admin/category/delete
'
,
'
POST /admin/category/getSubCategory
'
,
'
POST /admin/bidrecord/list
'
],
perms
:
[
'
GET /admin/category/list
'
,
'
POST /admin/category/create
'
,
'
GET /admin/category/read
'
,
'
POST /admin/category/update
'
,
'
POST /admin/category/delete
'
,
'
POST /admin/category/getSubCategory
'
,
'
POST /admin/bidrecord/list
'
],
title
:
'
钱币设置
'
,
title
:
'
钱币设置
'
,
...
@@ -172,12 +172,12 @@ export const asyncRouterMap = [
...
@@ -172,12 +172,12 @@ export const asyncRouterMap = [
{
{
path
:
'
category
'
,
path
:
'
category
'
,
component
:
()
=>
import
(
'
@/views/mall/category
'
),
component
:
()
=>
import
(
'
@/views/mall/category
'
),
name
:
'
c
ategory
'
,
name
:
'
C
ategory
'
,
meta
:
{
meta
:
{
perms
:
[
'
GET /admin/category/list
'
,
'
POST /admin/category/create
'
,
'
GET /admin/category/read
'
,
'
POST /admin/category/update
'
,
'
POST /admin/category/delete
'
,
'
POST /admin/category/getSubCategory
'
,
'
POST /admin/bidrecord/list
'
],
perms
:
[
'
GET /admin/category/list
'
,
'
POST /admin/category/create
'
,
'
GET /admin/category/read
'
,
'
POST /admin/category/update
'
,
'
POST /admin/category/delete
'
,
'
POST /admin/category/getSubCategory
'
,
'
POST /admin/bidrecord/list
'
],
title
:
'
钱币分类
'
,
title
:
'
钱币分类
'
,
icon
:
'
list
'
,
icon
:
'
list
'
,
noCache
:
tru
e
noCache
:
fals
e
}
}
},
},
{
{
...
...
src/views/layout/components/AppMain.vue
View file @
23e1441b
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<section
class=
"app-main"
>
<section
class=
"app-main"
>
<transition
name=
"fade-transform"
mode=
"out-in"
>
<transition
name=
"fade-transform"
mode=
"out-in"
>
<keep-alive
:include=
"cachedViews"
>
<keep-alive
:include=
"cachedViews"
>
<router-view
:key=
"key"
/>
<router-view
/>
</keep-alive>
</keep-alive>
</transition>
</transition>
</section>
</section>
...
...
src/views/mall/category.vue
View file @
23e1441b
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<div
v-if=
"activeLevel>0"
class=
"page__header flex f-ai-c"
>
<div
v-if=
"activeLevel > 0"
class=
"page__header flex f-ai-c"
>
<el-button
type=
"primary"
size=
"mini"
class=
"mr10"
@
click=
"onBack"
>
返回
</el-button>
<el-button
<div
v-if=
"categoryList[activeLevel]&&categoryList[activeLevel].path"
class=
"flex"
>
type=
"primary"
<div
v-for=
"(item,index) in categoryList[activeLevel].path"
:key=
"index"
class=
"page__header--text flex f-ai-c"
>
size=
"mini"
{{
item
}}
<span
v-if=
"index !==categoryList[activeLevel].path.length-1"
>
>
</span>
class=
"mr10"
@
click=
"onBack"
>
返回
</el-button
>
<div
v-if=
"categoryList[activeLevel] && categoryList[activeLevel].path"
class=
"flex"
>
<div
v-for=
"(item, index) in categoryList[activeLevel].path"
:key=
"index"
class=
"page__header--text flex f-ai-c"
>
{{
item
}}
<span
v-if=
"index !== categoryList[activeLevel].path.length - 1"
>
>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<el-table
v-loading=
"listLoading"
:data=
"categoryList[activeLevel] && categoryList[activeLevel].list"
size=
"small"
element-loading-text=
"正在查询中。。。"
border
fit
highlight-current-row
>
<el-table
<el-table-column
align=
"center"
label=
"ID"
prop=
"id"
/>
v-loading=
"listLoading"
<el-table-column
align=
"center"
label=
"名称"
prop=
"name"
/>
:data=
"categoryList[activeLevel] && categoryList[activeLevel].list"
size=
"small"
element-loading-text=
"正在查询中。。。"
border
fit
highlight-current-row
>
<el-table-column
align=
"center"
label=
"ID"
prop=
"id"
/>
<el-table-column
align=
"center"
label=
"名称"
prop=
"name"
/>
<el-table-column
align=
"center"
label=
"图片"
width=
"120px"
>
<el-table-column
align=
"center"
label=
"图片"
width=
"120px"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<img
v-if=
"scope.row.icon"
:src=
"scope.row.icon"
class=
"row-img"
>
<img
v-if=
"scope.row.icon"
:src=
"scope.row.icon"
class=
"row-img"
>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
align=
"center"
label=
"层级"
prop=
"level"
/>
<el-table-column
align=
"center"
label=
"层级"
prop=
"level"
/>
<el-table-column
align=
"left"
label=
"操作"
width=
"450"
class-name=
"small-padding fixed-width"
>
<el-table-column
align=
"left"
label=
"操作"
width=
"450"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
v-permission=
"['POST /admin/category/update']"
type=
"warning"
size=
"medium"
@
click=
"handleUpdate(scope.row)"
>
编辑
</el-button>
<el-button
<el-button
v-permission=
"['POST /admin/category/delete']"
type=
"danger"
size=
"medium"
@
click=
"handleDelete(scope.row)"
>
删除
</el-button>
v-permission=
"['POST /admin/category/update']"
<el-button
v-permission=
"['POST /admin/category/add']"
type=
"primary"
size=
"medium"
@
click=
"handleCreate(scope.row)"
>
添加子类目
</el-button>
type=
"warning"
size=
"medium"
@
click=
"handleUpdate(scope.row)"
>
编辑
</el-button
>
<el-button
v-permission=
"['POST /admin/category/delete']"
type=
"danger"
size=
"medium"
@
click=
"handleDelete(scope.row)"
>
删除
</el-button
>
<el-button
v-permission=
"['POST /admin/category/add']"
type=
"primary"
size=
"medium"
@
click=
"handleCreate(scope.row)"
>
添加子类目
</el-button
>
<i
v-permission=
"['POST /admin/category/getSubCategory']"
>
<i
v-permission=
"['POST /admin/category/getSubCategory']"
>
<el-button
v-if=
"!scope.row.leaf"
type=
""
size=
"medium"
@
click=
"handleChild(scope.row)"
>
查看子类目
</el-button>
<el-button
v-if=
"!scope.row.leaf"
type=
""
size=
"medium"
@
click=
"handleChild(scope.row)"
>
查看子类目
</el-button
>
</i>
</i>
<i
v-permission=
"['POST /admin/category/getSubCategory']"
>
<i
v-permission=
"['POST /admin/category/getSubCategory']"
>
<el-button
v-if=
"scope.row.leaf"
type=
""
size=
"medium"
@
click=
"handleDealRecord(scope.row)"
>
成交记录
</el-button>
<el-button
v-if=
"scope.row.leaf"
type=
""
size=
"medium"
@
click=
"handleDealRecord(scope.row)"
>
成交记录
</el-button
>
</i>
</i>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
...
@@ -60,15 +119,23 @@
...
@@ -60,15 +119,23 @@
</tree-table> -->
</tree-table> -->
<!-- 添加或修改对话框 -->
<!-- 添加或修改对话框 -->
<el-dialog
:title=
"textMap[dialogStatus]"
:visible.sync=
"dialogFormVisible"
>
<el-dialog
:title=
"textMap[dialogStatus]"
:visible.sync=
"dialogFormVisible"
>
<el-form
ref=
"dataForm"
:rules=
"rules"
:model=
"dataForm"
status-icon
label-position=
"left"
label-width=
"100px"
style=
"width: 400px; margin-left:50px;"
>
<el-form
ref=
"dataForm"
:rules=
"rules"
:model=
"dataForm"
status-icon
label-position=
"left"
label-width=
"100px"
style=
"width: 400px; margin-left: 50px"
>
<el-form-item
label=
"名称"
prop=
"name"
>
<el-form-item
label=
"名称"
prop=
"name"
>
<el-input
v-model=
"dataForm.name"
/>
<el-input
v-model=
"dataForm.name"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"扩展名称"
prop=
"extendName"
>
<el-form-item
label=
"扩展名称"
prop=
"extendName"
>
<el-input
v-model=
"dataForm.extendName"
/>
<el-input
v-model=
"dataForm.extendName"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"品种代码"
prop=
"serialNo"
>
<el-form-item
label=
"品种代码"
prop=
"serialNo"
>
<el-input
v-model=
"dataForm.serialNo"
/>
<el-input
v-model=
"dataForm.serialNo"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"图片"
prop=
"icon"
>
<el-form-item
label=
"图片"
prop=
"icon"
>
<el-upload
<el-upload
...
@@ -77,43 +144,44 @@
...
@@ -77,43 +144,44 @@
:show-file-list=
"false"
:show-file-list=
"false"
:on-success=
"uploadIconUrl"
:on-success=
"uploadIconUrl"
class=
"avatar-uploader"
class=
"avatar-uploader"
accept=
".jpg,.jpeg,.png,.gif"
>
accept=
".jpg,.jpeg,.png,.gif"
<img
v-if=
"dataForm.icon"
:src=
"dataForm.icon"
class=
"avatar"
>
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
/>
<img
v-if=
"dataForm.icon"
:src=
"dataForm.icon"
class=
"avatar"
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
/>
</el-upload>
</el-upload>
</el-form-item>
</el-form-item>
<el-form-item
label=
"铸年"
prop=
"publishTime"
>
<el-form-item
label=
"铸年"
prop=
"publishTime"
>
<el-input
v-model=
"dataForm.publishTime"
/>
<el-input
v-model=
"dataForm.publishTime"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"铸主"
prop=
"publisher"
>
<el-form-item
label=
"铸主"
prop=
"publisher"
>
<el-input
v-model=
"dataForm.publisher"
/>
<el-input
v-model=
"dataForm.publisher"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"王朝"
prop=
"desc"
>
<el-form-item
label=
"王朝"
prop=
"desc"
>
<el-input
v-model=
"dataForm.dynasty"
/>
<el-input
v-model=
"dataForm.dynasty"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"面值"
prop=
"parValue"
>
<el-form-item
label=
"面值"
prop=
"parValue"
>
<el-input
v-model=
"dataForm.parValue"
/>
<el-input
v-model=
"dataForm.parValue"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"直径(mm)"
prop=
"diameter"
>
<el-form-item
label=
"直径(mm)"
prop=
"diameter"
>
<el-input
v-model=
"dataForm.diameter"
/>
<el-input
v-model=
"dataForm.diameter"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"厚度(mm)"
prop=
"thickness"
>
<el-form-item
label=
"厚度(mm)"
prop=
"thickness"
>
<el-input
v-model=
"dataForm.thickness"
/>
<el-input
v-model=
"dataForm.thickness"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"重量(g)"
prop=
"weight"
>
<el-form-item
label=
"重量(g)"
prop=
"weight"
>
<el-input
v-model=
"dataForm.weight"
/>
<el-input
v-model=
"dataForm.weight"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"存世量"
prop=
"exiQuantity"
>
<el-form-item
label=
"存世量"
prop=
"exiQuantity"
>
<el-input
v-model=
"dataForm.exiQuantity"
/>
<el-input
v-model=
"dataForm.exiQuantity"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"材质"
prop=
"material"
>
<el-form-item
label=
"材质"
prop=
"material"
>
<el-input
v-model=
"dataForm.material"
/>
<el-input
v-model=
"dataForm.material"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"命名出处"
prop=
"nameSrc"
>
<el-form-item
label=
"命名出处"
prop=
"nameSrc"
>
<el-input
v-model=
"dataForm.nameSrc"
/>
<el-input
v-model=
"dataForm.nameSrc"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"细节描述"
prop=
"desc"
>
<el-form-item
label=
"细节描述"
prop=
"desc"
>
<el-input
v-model=
"dataForm.desc"
/>
<el-input
v-model=
"dataForm.desc"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"金属成分分析表"
prop=
"caTableImage"
>
<el-form-item
label=
"金属成分分析表"
prop=
"caTableImage"
>
<el-upload
<el-upload
...
@@ -122,24 +190,38 @@
...
@@ -122,24 +190,38 @@
:show-file-list=
"false"
:show-file-list=
"false"
:on-success=
"uploadCaTableImageUrl"
:on-success=
"uploadCaTableImageUrl"
class=
"avatar-uploader"
class=
"avatar-uploader"
accept=
".jpg,.jpeg,.png,.gif"
>
accept=
".jpg,.jpeg,.png,.gif"
<img
v-if=
"dataForm.caTableImage"
:src=
"dataForm.caTableImage"
class=
"avatar"
>
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
/>
<img
v-if=
"dataForm.caTableImage"
:src=
"dataForm.caTableImage"
class=
"avatar"
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
/>
</el-upload>
</el-upload>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogFormVisible = false"
>
取消
</el-button>
<el-button
@
click=
"dialogFormVisible = false"
>
取消
</el-button>
<el-button
v-if=
"dialogStatus=='create'"
type=
"primary"
@
click=
"createData"
>
确定
</el-button>
<el-button
v-if=
"dialogStatus == 'create'"
type=
"primary"
@
click=
"createData"
>
确定
</el-button
>
<el-button
v-else
type=
"primary"
@
click=
"updateData"
>
确定
</el-button>
<el-button
v-else
type=
"primary"
@
click=
"updateData"
>
确定
</el-button>
</div>
</div>
</el-dialog>
</el-dialog>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
createCategory
,
updateCategory
,
deleteCategory
,
getCategory
}
from
'
@/api/business/category
'
import
{
createCategory
,
updateCategory
,
deleteCategory
,
getCategory
}
from
'
@/api/business/category
'
import
{
getToken
}
from
'
@/utils/auth
'
import
{
getToken
}
from
'
@/utils/auth
'
import
{
uploadPath
}
from
'
@/api/business/storage
'
import
{
uploadPath
}
from
'
@/api/business/storage
'
import
TreeTable
from
'
tree-table-vue
'
import
TreeTable
from
'
tree-table-vue
'
...
@@ -163,8 +245,7 @@ export default {
...
@@ -163,8 +245,7 @@ export default {
expandType
:
false
,
expandType
:
false
,
selectable
:
false
selectable
:
false
},
},
categories
:
[
categories
:
[],
],
catL1
:
{},
catL1
:
{},
dataForm
:
{
dataForm
:
{
id
:
undefined
,
id
:
undefined
,
...
@@ -267,7 +348,8 @@ export default {
...
@@ -267,7 +348,8 @@ export default {
const
data
=
{
const
data
=
{
id
:
id
||
0
id
:
id
||
0
}
}
getCategory
(
data
).
then
(
res
=>
{
getCategory
(
data
)
.
then
((
res
)
=>
{
if
(
res
&&
res
.
data
&&
res
.
data
.
data
&&
res
.
data
.
data
.
categoryList
)
{
if
(
res
&&
res
.
data
&&
res
.
data
.
data
&&
res
.
data
.
data
.
categoryList
)
{
if
([
'
create
'
,
'
update
'
,
'
delete
'
].
includes
(
this
.
dialogStatus
))
{
if
([
'
create
'
,
'
update
'
,
'
delete
'
].
includes
(
this
.
dialogStatus
))
{
this
.
categoryList
.
splice
(
this
.
activeLevel
,
1
,
{
this
.
categoryList
.
splice
(
this
.
activeLevel
,
1
,
{
...
@@ -284,7 +366,8 @@ export default {
...
@@ -284,7 +366,8 @@ export default {
}
}
}
}
this
.
listLoading
=
false
this
.
listLoading
=
false
}).
catch
(()
=>
{
})
.
catch
(()
=>
{
this
.
categories
=
[]
this
.
categories
=
[]
this
.
listLoading
=
false
this
.
listLoading
=
false
})
})
...
@@ -316,7 +399,7 @@ export default {
...
@@ -316,7 +399,7 @@ export default {
})
})
},
},
createData
()
{
createData
()
{
this
.
$refs
[
'
dataForm
'
].
validate
(
valid
=>
{
this
.
$refs
[
'
dataForm
'
].
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
createCategory
(
this
.
dataForm
)
createCategory
(
this
.
dataForm
)
.
then
(()
=>
{
.
then
(()
=>
{
...
@@ -328,7 +411,7 @@ export default {
...
@@ -328,7 +411,7 @@ export default {
// location.reload()
// location.reload()
this
.
getAllCategories
()
this
.
getAllCategories
()
})
})
.
catch
(
response
=>
{
.
catch
(
(
response
)
=>
{
this
.
$notify
.
error
({
this
.
$notify
.
error
({
title
:
'
失败
'
,
title
:
'
失败
'
,
message
:
response
.
data
.
errmsg
message
:
response
.
data
.
errmsg
...
@@ -352,7 +435,7 @@ export default {
...
@@ -352,7 +435,7 @@ export default {
this
.
dataForm
.
caTableImage
=
response
.
data
.
url
this
.
dataForm
.
caTableImage
=
response
.
data
.
url
},
},
updateData
()
{
updateData
()
{
this
.
$refs
[
'
dataForm
'
].
validate
(
valid
=>
{
this
.
$refs
[
'
dataForm
'
].
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
updateCategory
(
this
.
dataForm
)
updateCategory
(
this
.
dataForm
)
.
then
(()
=>
{
.
then
(()
=>
{
...
@@ -364,7 +447,7 @@ export default {
...
@@ -364,7 +447,7 @@ export default {
// location.reload()
// location.reload()
this
.
getAllCategories
()
this
.
getAllCategories
()
})
})
.
catch
(
response
=>
{
.
catch
(
(
response
)
=>
{
this
.
$notify
.
error
({
this
.
$notify
.
error
({
title
:
'
失败
'
,
title
:
'
失败
'
,
message
:
response
.
data
.
errmsg
message
:
response
.
data
.
errmsg
...
@@ -384,7 +467,7 @@ export default {
...
@@ -384,7 +467,7 @@ export default {
// location.reload()
// location.reload()
this
.
getAllCategories
()
this
.
getAllCategories
()
})
})
.
catch
(
response
=>
{
.
catch
(
(
response
)
=>
{
this
.
$notify
.
error
({
this
.
$notify
.
error
({
title
:
'
失败
'
,
title
:
'
失败
'
,
message
:
response
.
data
.
errmsg
message
:
response
.
data
.
errmsg
...
...
src/views/mall/dealRecord.vue
View file @
23e1441b
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<div
class=
"page__header flex f-ai-c f-jc-
e
"
>
<div
class=
"page__header flex f-ai-c f-jc-
sb
"
>
<
!--
<el-button
type=
"primary"
size=
"mini"
class=
"mr10"
@
click=
"onBack"
>
返回
</el-button>
--
>
<
el-button
type=
"primary"
size=
"mini"
class=
"mr10"
@
click=
"onBack"
>
返回
</el-button
>
<el-button
type=
"danger"
size=
"mini"
class=
"mr10"
@
click=
"onAdd"
>
添加成交记录
</el-button>
<el-button
type=
"danger"
size=
"mini"
class=
"mr10"
@
click=
"onAdd"
>
添加成交记录
</el-button>
</div>
</div>
<el-form
ref=
"searchForm"
:inline=
"true"
:model=
"searchForm"
class=
"demo-form-inline"
>
<el-form
ref=
"searchForm"
:inline=
"true"
:model=
"searchForm"
class=
"demo-form-inline"
>
...
@@ -144,7 +144,7 @@ import moment from 'moment'
...
@@ -144,7 +144,7 @@ import moment from 'moment'
import
Pagination
from
'
@/components/Pagination
'
// Secondary package based on el-pagination
import
Pagination
from
'
@/components/Pagination
'
// Secondary package based on el-pagination
import
Line2Hidden
from
'
@/components/line2Hidden
'
import
Line2Hidden
from
'
@/components/line2Hidden
'
export
default
{
export
default
{
name
:
'
Category
'
,
name
:
'
DealRecord
'
,
components
:
{
Pagination
,
Line2Hidden
},
components
:
{
Pagination
,
Line2Hidden
},
filters
:
{
filters
:
{
filterTime
(
val
)
{
filterTime
(
val
)
{
...
...
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