Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
liangzhen
/
framework-tools-web
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit ae30e62e
authored
Dec 07, 2023
by
liuyong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改菜单
1 parent
e4c18de8
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
377 additions
and
219 deletions
public/drawio/js/grapheditor/Menus.js
public/drawio/resources/dia.txt
public/drawio/resources/dia_zh.txt
src/api/index.js
src/router/index.js
src/views/JiaGouYuanSuGuanLi/index.vue
src/views/Main/index.vue
src/views/YuanMoXingGuanLi/YuanMoXingGuanLiCanvas/index.vue
src/views/NewPage/index.vue → src/views/YuanMoXingGuanLi/YuanMoXingGuanLiTable/index.vue
src/views/YuanMoXingGuanLi/details.vue
src/views/YuanMoXingGuanLi/index.vue
src/views/YuanMoXingGuanLiZongLan/index.vue
public/drawio/js/grapheditor/Menus.js
View file @
ae30e62
...
...
@@ -31,7 +31,7 @@ Menus.prototype.defaultFontSize = '12';
* Sets the default font size.
*/
// Menus.prototype.defaultMenuItems = ['file', 'edit', 'view', 'arrange', 'extras', 'help'];
Menus
.
prototype
.
defaultMenuItems
=
[
'file'
,
'edit'
,
'view'
,
'arrange'
,
'extras'
,
'customSaveFileMenu'
,
'currentCanvasDataTable'
];
//二次开发,去掉某些菜单,添加新菜单
Menus
.
prototype
.
defaultMenuItems
=
[
'file'
,
'edit'
,
'view'
,
'arrange'
,
'extras'
,
'customSaveFileMenu'
];
//二次开发,去掉某些菜单,添加新菜单
/**
* Adds the label menu items to the given menu and parent.
...
...
public/drawio/resources/dia.txt
View file @
ae30e62
...
...
@@ -287,7 +287,6 @@ exportOptionsDisabledDetails=The owner has disabled options to download, print o
externalChanges=External Changes
extras=Extras
customSaveFileMenu=customSaveFileMenu
currentCanvasDataTable=currentCanvasDataTable
customSubMenu1=功能1
customSubMenu2=功能2
facebook=Facebook
...
...
public/drawio/resources/dia_zh.txt
View file @
ae30e62
...
...
@@ -287,7 +287,6 @@ exportOptionsDisabledDetails=所有者已禁止评论者及浏览者下载、打
externalChanges=外部修改
extras=其它
customSaveFileMenu=自定义保存文件
currentCanvasDataTable=当前画布数据表
customSubMenu1=功能1
customSubMenu2=功能2
facebook=Facebook
...
...
src/api/index.js
View file @
ae30e62
...
...
@@ -24,9 +24,20 @@ export function query_jia_gou_gui_shu(params) {// 查询架构归属
export
function
delete_jia_gou_gui_shu
(
params
)
{
// 删除架构元素列表某项
return
post
(
'/ele/deleteEle'
,
params
);
}
export
function
version_release_jia_gou_gui_shu
(
params
)
{
// 版本发布
return
post
(
'/ele/updateEleBatch'
,
params
);
}
// 架构元素关系管理
// 列表查询
export
function
getJGYSGLlist
(
params
)
{
return
post
(
'/eleRel/'
,
params
);
}
export
function
add_jia_gou_yuan_su
(
params
)
{
// 架构元素管理,新建
return
post
(
'/ele/addEle'
,
params
);
}
export
function
edit_jia_gou_yuan_su
(
params
)
{
// 架构元素管理,新建
return
post
(
'/ele/updateEle'
,
params
);
}
export
function
add_yuan_mo_xing
(
params
)
{
// 元模型管理,新建
return
post
(
'/ynMol/addYnMol'
,
params
);
}
\ No newline at end of file
src/router/index.js
View file @
ae30e62
...
...
@@ -44,25 +44,31 @@ const routes = [
name
:
'YeWuZiChanGuanLi'
,
component
:
()
=>
import
(
'@/views/YeWuZiChanGuanLi/index.vue'
),
},
{
path
:
'/main/YuanMoXingGuanLi'
,
//元模型管理
name
:
'YuanMoXingGuanLi
'
,
component
:
()
=>
import
(
'@/views/YuanMoXingGuanLi
/index.vue'
),
},
//
{
// path: '/main/YuanMoXingGuanLiCanvas',//元模型管理画布
// name: 'YuanMoXingGuanLiCanvas
',
// component: () => import('@/views/YuanMoXingGuanLi/YuanMoXingGuanLiCanvas
/index.vue'),
//
},
{
path
:
'/main/wenDangDemo'
,
//在线文档编制
name
:
'wenDangDemo'
,
component
:
()
=>
import
(
'@/views/wenDangDemo/index.vue'
),
},
{
path
:
'/main/YuanMoXingGuanLiZongLan'
,
//元模型管理总览
name
:
'YuanMoXingGuanLiZongLan'
,
component
:
()
=>
import
(
'@/views/YuanMoXingGuanLiZongLan/index.vue'
),
},{
path
:
'/main/NewPage'
,
//drawio跳转的表格预览
name
:
'NewPage'
,
component
:
()
=>
import
(
'@/views/NewPage/index.vue'
),
path
:
'/main/YuanMoXingGuanLi'
,
//元模型管理
name
:
'YuanMoXingGuanLi'
,
component
:
()
=>
import
(
'@/views/YuanMoXingGuanLi/index.vue'
),
},
{
path
:
'/main/YuanMoXingGuanLiDetails'
,
//元模型管理详情
name
:
'YuanMoXingGuanLiDetails'
,
component
:
()
=>
import
(
'@/views/YuanMoXingGuanLi/details.vue'
),
}
// {
// path: '/main/YuanMoXingGuanLiTable',//drawio跳转的表格
// name: 'YuanMoXingGuanLiTable',
// component: () => import('@/views/YuanMoXingGuanLi/YuanMoXingGuanLiTable/index.vue'),
// }
]
}
]
...
...
src/views/JiaGouYuanSuGuanLi/index.vue
View file @
ae30e62
This diff is collapsed.
Click to expand it.
src/views/Main/index.vue
View file @
ae30e62
...
...
@@ -68,7 +68,7 @@
<span
style=
"margin-left: 5px;"
>
架构视图管理
</span>
</div>
<div
class=
"menu_1_item_subtitle"
@
click=
"jumpPage('总体架构资产设计与维护', '架构元模型管理', '架构视图管理')"
>
<div
class=
"menu_1_item_subtitle"
>
<img
src=
"@/assets/三级圆环.png"
alt=
""
>
<span
style=
"margin-left: 5px;"
>
架构视图管理
</span>
</div>
...
...
@@ -499,17 +499,17 @@
};
},
mounted
(){
window
.
addEventListener
(
"message"
,
event
=>
{
//会一直调用
// console.log(event);
if
(
event
.
data
==
'newPage'
)
{
// this.$router.push( '/main/NewPage', () => {}, () => {} );
let
routeUrl
=
this
.
$router
.
resolve
({
path
:
"/main/NewPage"
,
});
window
.
open
(
routeUrl
.
href
,
'_blank'
);
this
.
visible1
=
false
;
}
});
//
window.addEventListener("message", event => {//会一直调用
//
// console.log(event);
//
if(event.data == 'newPage') {
//
// this.$router.push( '/main/NewPage', () => {}, () => {} );
//
let routeUrl = this.$router.resolve({
//
path: "/main/NewPage",
//
});
//
window.open(routeUrl.href, '_blank');
//
this.visible1 = false;
//
}
//
});
$
(
".menu_item"
).
hover
(
function
()
{
$
(
this
).
find
(
".menu_title"
).
css
(
'color'
,
'#0D867F'
);
$
(
this
).
find
(
".menu_icon"
).
css
(
'display'
,
'none'
);
...
...
@@ -561,11 +561,6 @@
case
'在线文档编制'
:
this
.
$router
.
push
(
'/main/wenDangDemo'
,
()
=>
{},
()
=>
{}
);
break
;
case
'架构视图管理'
:
this
.
$router
.
push
(
'/main/YuanMoXingGuanLiZongLan'
,
()
=>
{},
()
=>
{}
);
this
.
visible1
=
false
;
break
;
}
}
}
...
...
src/views/YuanMoXingGuanLi/YuanMoXingGuanLiCanvas/index.vue
0 → 100644
View file @
ae30e62
<
template
>
<div
class=
"YuanMoXingGuanLiCanvas"
>
<Drawio
:initGraphId=
"1"
></Drawio>
</div>
</
template
>
<
script
>
import
Drawio
from
'@/components/drawio.vue'
;
export
default
{
name
:
'YuanMoXingGuanLi'
,
components
:
{
Drawio
},
}
</
script
>
<
style
scoped
>
.YuanMoXingGuanLiCanvas
{
width
:
100%
;
/* height: calc(100% - 20px); */
height
:
100%
;
/* padding-right: 20px;
padding-left: 20px;
padding-bottom: 20px; */
}
</
style
>
src/views/
NewPag
e/index.vue
→
src/views/
YuanMoXingGuanLi/YuanMoXingGuanLiTabl
e/index.vue
View file @
ae30e62
<
template
>
<div
class=
"
NewPag
e"
>
<div
class=
"
YuanMoXingGuanLiTabl
e"
>
<div
class=
"table_container"
>
<el-table
:data=
"tableData"
stripe
border
>
<el-table
v-loading=
"loading"
:data=
"tableData"
stripe
border
>
<el-table-column
type=
"selection"
width=
"55"
></el-table-column>
<el-table-column
type=
"index"
label=
"序号"
width=
"80"
align=
"center"
></el-table-column>
<el-table-column
prop=
"let1"
label=
"元素名称"
align=
"center"
></el-table-column>
...
...
@@ -34,11 +34,6 @@
</
template
>
</el-table-column>
</el-table>
<el-pagination
background
layout=
"prev, pager, next"
:total=
"50"
>
</el-pagination>
</div>
<el-dialog
...
...
@@ -82,7 +77,7 @@
<
script
>
export
default
{
name
:
'
NewPag
e'
,
name
:
'
YuanMoXingGuanLiTabl
e'
,
components
:
{
},
...
...
@@ -94,28 +89,20 @@ export default {
let2
:
''
,
let3
:
''
,
let4
:
''
,
loading
:
false
};
},
}
</
script
>
<
style
scoped
>
.
NewPag
e
{
.
YuanMoXingGuanLiTabl
e
{
width
:
100%
;
height
:
100%
;
}
.table_container
{
width
:
97%
;
margin-top
:
20px
;
}
.el-pagination
{
margin-top
:
50px
;
}
/
deep
/
.el-dialog__header
{
text-align
:
left
;
}
/
deep
/
.el-pagination.is-background
.el-pager
li
:not
(
.disabled
)
.active
{
background-color
:
#0D867F
;
}
</
style
>
\ No newline at end of file
src/views/YuanMoXingGuanLi/details.vue
0 → 100644
View file @
ae30e62
<
template
>
<div
class=
"YuanMoXingGuanLiDetails"
>
<el-tabs
type=
"border-card"
>
<el-tab-pane>
<span
slot=
"label"
>
<i
class=
"el-icon-picture"
></i>
</span>
<YuanMoXingGuanLiCanvas></YuanMoXingGuanLiCanvas>
</el-tab-pane>
<el-tab-pane>
<span
slot=
"label"
>
<i
class=
"el-icon-s-grid"
></i>
</span>
<YuanMoXingGuanLiTable></YuanMoXingGuanLiTable>
</el-tab-pane>
</el-tabs>
</div>
</
template
>
<
script
>
import
YuanMoXingGuanLiCanvas
from
'./YuanMoXingGuanLiCanvas/index.vue'
;
import
YuanMoXingGuanLiTable
from
'./YuanMoXingGuanLiTable/index.vue'
;
export
default
{
name
:
'YuanMoXingGuanLiDetails'
,
components
:
{
YuanMoXingGuanLiCanvas
,
YuanMoXingGuanLiTable
},
data
()
{
return
{
};
},
mounted
(){
},
methods
:
{
}
}
</
script
>
<
style
scoped
>
.YuanMoXingGuanLiDetails
{
width
:
100%
;
height
:
100%
;
}
/
deep
/
.el-tabs__nav
{
float
:
right
;
}
.el-tabs
{
height
:
100%
;
}
/
deep
/
.el-tabs__content
{
height
:
calc
(
100%
-
38px
);
padding
:
0
;
}
.el-tab-pane
{
height
:
100%
;
}
</
style
>
\ No newline at end of file
src/views/YuanMoXingGuanLi/index.vue
View file @
ae30e62
<
template
>
<div
class=
"YuanMoXingGuanLi"
>
<Drawio
:initGraphId=
"1"
></Drawio>
<div
class=
"search_menu"
>
<el-dropdown
trigger=
"click"
@
command=
"handleCommand"
>
<div
class=
"el-dropdown-link add_btn"
>
<img
class=
"btn_icon"
src=
"@/assets/新建icon.png"
alt=
""
/>
<p>
新建
</p>
</div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
command=
"自由绘图"
>
自由绘图
</el-dropdown-item>
<el-dropdown-item
command=
"基于模版绘图"
>
基于模版绘图
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-input
v-model=
"query_item1"
placeholder=
"请输入内容"
class=
"search_item"
prefix-icon=
"el-icon-search"
></el-input>
<div
class=
"query_btn"
>
<p>
版本分析
</p>
</div>
</div>
<div
class=
"line_title_container"
>
<div
class=
"title_container"
>
<el-divider
direction=
"vertical"
></el-divider>
<span>
已发布
</span>
</div>
<el-divider></el-divider>
</div>
<div
class=
"card_container"
>
<el-card
class=
"card_item"
v-for=
"o in 7"
:key=
"o"
>
<img
class=
"card_image"
@
click=
"to_current_details"
src=
"@/assets/元模型管理.svg"
alt=
""
/>
<div
class=
"card_info"
>
<div
class=
"card_title"
>
<i
class=
"el-icon-location"
></i>
元模型 版本XX
</div>
<div
class=
"card_icon"
>
<i
class=
"el-icon-delete"
></i>
</div>
</div>
</el-card>
</div>
<div
class=
"line_title_container"
>
<div
class=
"title_container"
>
<el-divider
direction=
"vertical"
></el-divider>
<span>
暂存
</span>
</div>
<el-divider></el-divider>
</div>
<div
class=
"card_container"
>
<el-card
class=
"card_item"
v-for=
"o in 7"
:key=
"o"
>
<img
class=
"card_image"
@
click=
"to_current_details"
src=
"@/assets/元模型管理.svg"
alt=
""
/>
<div
class=
"card_info"
>
<div
class=
"card_title"
>
<i
class=
"el-icon-location"
></i>
元模型 版本XX
</div>
<div
class=
"card_icon"
>
<i
class=
"el-icon-delete"
></i>
</div>
</div>
</el-card>
</div>
<el-dialog
title=
"新建元模型视图"
:visible
.
sync=
"add_dialog"
:center=
"false"
width=
"40%"
>
<div
class=
"add_dialog_content"
>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
>
<el-form-item
label=
"版本名称"
prop=
"name"
>
<el-input
v-model=
"ruleForm.name"
></el-input>
</el-form-item>
</el-form>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
class=
"greenButton"
@
click=
"ok"
>
确定
</el-button>
<el-button
@
click=
"add_dialog = false"
>
取消
</el-button>
</span>
</el-dialog>
</div>
</
template
>
<
script
>
import
Drawio
from
'@/components/drawio.vue'
;
import
{
add_yuan_mo_xing
,
}
from
'@/api/index.js'
;
import
{
MessageBox
,
Message
}
from
'element-ui'
;
export
default
{
export
default
{
name
:
'YuanMoXingGuanLi'
,
components
:
{
Drawio
},
data
()
{
return
{
add_dialog
:
false
,
query_item1
:
''
,
ruleForm
:
{
name
:
''
,
},
rules
:
{
name
:
[
{
required
:
true
,
message
:
'请输入版本名称'
,
trigger
:
'blur'
},
],
}
};
},
mounted
(){
},
methods
:
{
ok
()
{
//弹框点击确定
this
.
$refs
.
ruleForm
.
validate
(
valid
=>
{
if
(
valid
)
{
const
params
=
{
verName
:
this
.
ruleForm
.
name
};
add_yuan_mo_xing
(
params
).
then
(
res
=>
{
// console.log(res)
if
(
res
.
code
==
200
)
{
this
.
add_dialog
=
false
;
this
.
$router
.
push
(
'/main/YuanMoXingGuanLiDetails'
,
()
=>
{},
()
=>
{}
);
Message
({
type
:
'success'
,
message
:
'新增成功!'
});
}
else
{
Message
({
type
:
'error'
,
message
:
'新增失败!'
});
}
})
}
else
{
console
.
log
(
'error submit!!'
);
return
false
;
}
});
},
to_current_details
()
{
//跳转到详情
this
.
$router
.
push
(
'/main/YuanMoXingGuanLiDetails'
,
()
=>
{},
()
=>
{}
);
},
handleCommand
(
command
)
{
//新建按钮点击
if
(
command
==
'自由绘图'
)
{
this
.
add_dialog
=
true
;
}
else
{
}
}
}
}
</
script
>
<
style
scoped
>
.greenButton
{
background-color
:
#0D867F
;
color
:
#fff
;
}
.el-form-item
{
display
:
flex
;
}
/
deep
/
.el-form-item__content
{
width
:
80%
;
}
/
deep
/
.el-dialog__header
{
background-color
:
#0D867F
;
text-align
:
left
;
}
/
deep
/
.el-dialog__title
{
color
:
#fff
;
}
/
deep
/
.el-dialog__close
{
color
:
#fff
;
}
.card_icon
{
cursor
:
pointer
;
}
.card_info
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin
:
30px
40px
0
40px
;
}
.card_image
{
width
:
165px
;
}
.YuanMoXingGuanLi
{
width
:
100%
;
/* height: calc(100% - 20px); */
height
:
100%
;
/* padding-right: 20px;
padding-left: 20px;
padding-bottom: 20px; */
}
.search_menu
{
display
:
flex
;
align-items
:
center
;
margin-top
:
10px
;
margin-bottom
:
20px
;
}
.card_item
{
display
:
inline-block
;
width
:
350px
;
height
:
240px
;
margin
:
15px
;
background-color
:
#F2FFFE
;
cursor
:
pointer
;
}
.search_item
{
width
:
300px
;
margin
:
0
10px
0
10px
;
}
.btn_icon
{
margin-right
:
6px
;
}
.add_btn
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
76px
;
height
:
32px
;
background
:
rgba
(
13
,
134
,
127
,
0.1
);
border-radius
:
6px
6px
6px
6px
;
border
:
1px
solid
#0D867F
;
font-size
:
14px
;
color
:
#0D867F
;
cursor
:
pointer
;
}
.query_btn
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
100px
;
height
:
32px
;
background
:
rgba
(
13
,
134
,
127
,
1
);
border-radius
:
4px
;
border
:
1px
solid
#0D867F
;
font-size
:
14px
;
color
:
#fff
;
margin-right
:
10px
;
cursor
:
pointer
;
}
.el-divider--horizontal
{
margin
:
10px
0
;
}
.title_container
{
display
:
flex
;
align-items
:
center
;
}
.el-divider--vertical
{
background-color
:
#0D867F
;
border
:
2px
solid
#0D867F
;
}
.card_container
{
height
:
260px
;
margin-bottom
:
10px
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
display
:
flex
;
flex-wrap
:
wrap
;
}
</
style
>
\ No newline at end of file
src/views/YuanMoXingGuanLiZongLan/index.vue
deleted
100644 → 0
View file @
e4c18de
<
template
>
<div
class=
"YuanMoXingZiDianGuanLi"
>
<div
class=
"search_menu"
>
<div
class=
"add_btn"
@
click=
"add_dialog = true"
>
<img
class=
"btn_icon"
src=
"@/assets/新建icon.png"
alt=
""
/>
<p>
新建
</p>
</div>
<el-input
v-model=
"query_item1"
placeholder=
"请输入内容"
class=
"search_item"
prefix-icon=
"el-icon-search"
></el-input>
<div
class=
"query_btn"
>
<p>
版本分析
</p>
</div>
</div>
<div
class=
"line_title_container"
>
<div
class=
"title_container"
>
<el-divider
direction=
"vertical"
></el-divider>
<span>
已发布
</span>
</div>
<el-divider></el-divider>
</div>
<div
class=
"card_container"
>
<el-card
class=
"card_item"
v-for=
"o in 7"
:key=
"o"
>
<img
class=
"card_image"
src=
"@/assets/元模型管理.svg"
alt=
""
/>
<div
class=
"card_info"
>
<div
class=
"card_title"
>
<i
class=
"el-icon-location"
></i>
元模型 版本XX
</div>
<div
class=
"card_icon"
>
<i
class=
"el-icon-delete"
></i>
</div>
</div>
</el-card>
</div>
<div
class=
"line_title_container"
>
<div
class=
"title_container"
>
<el-divider
direction=
"vertical"
></el-divider>
<span>
暂存
</span>
</div>
<el-divider></el-divider>
</div>
<div
class=
"card_container"
>
<el-card
class=
"card_item"
v-for=
"o in 7"
:key=
"o"
>
<img
class=
"card_image"
src=
"@/assets/元模型管理.svg"
alt=
""
/>
<div
class=
"card_info"
>
<div
class=
"card_title"
>
<i
class=
"el-icon-location"
></i>
元模型 版本XX
</div>
<div
class=
"card_icon"
>
<i
class=
"el-icon-delete"
></i>
</div>
</div>
</el-card>
</div>
</div>
</
template
>
<
script
>
export
default
{
name
:
'YuanMoXingZiDianGuanLi'
,
components
:
{
},
data
()
{
return
{
add_dialog
:
false
,
query_item1
:
''
};
},
}
</
script
>
<
style
scoped
>
.card_icon
{
cursor
:
pointer
;
}
.card_info
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin
:
30px
40px
0
40px
;
}
.card_image
{
width
:
165px
;
}
.YuanMoXingZiDianGuanLi
{
width
:
100%
;
height
:
100%
;
}
.search_menu
{
display
:
flex
;
align-items
:
center
;
margin-top
:
10px
;
margin-bottom
:
20px
;
}
.card_item
{
display
:
inline-block
;
width
:
350px
;
height
:
240px
;
margin
:
15px
;
background-color
:
#F2FFFE
;
cursor
:
pointer
;
}
.search_item
{
width
:
300px
;
margin
:
0
10px
0
10px
;
}
.btn_icon
{
margin-right
:
6px
;
}
.add_btn
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
76px
;
height
:
32px
;
background
:
rgba
(
13
,
134
,
127
,
0.1
);
border-radius
:
6px
6px
6px
6px
;
border
:
1px
solid
#0D867F
;
font-size
:
14px
;
color
:
#0D867F
;
cursor
:
pointer
;
}
.query_btn
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
100px
;
height
:
32px
;
background
:
rgba
(
13
,
134
,
127
,
1
);
border-radius
:
4px
;
border
:
1px
solid
#0D867F
;
font-size
:
14px
;
color
:
#fff
;
margin-right
:
10px
;
cursor
:
pointer
;
}
.el-divider--horizontal
{
margin
:
10px
0
;
}
.title_container
{
display
:
flex
;
align-items
:
center
;
}
.el-divider--vertical
{
background-color
:
#0D867F
;
border
:
2px
solid
#0D867F
;
}
.card_container
{
height
:
260px
;
margin-bottom
:
10px
;
overflow-x
:
hidden
;
overflow-y
:
auto
;
display
:
flex
;
flex-wrap
:
wrap
;
}
</
style
>
\ No newline at end of file
Write
Preview
Markdown
is supported
Attach a file
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 post a comment