Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mes-ui
Project
Project
Details
Activity
Releases
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
周远喜
mes-ui
Commits
35ce306d
Commit
35ce306d
authored
Apr 22, 2020
by
仇晓婷
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'product' of
http://git.mes123.com/zhouyx/mes-ui
into product
parents
a24d5e0f
8bc7e4b3
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
552 additions
and
54 deletions
+552
-54
base.less
assets/css/base.less
+3
-0
opration.vue
components/page/opration.vue
+48
-49
addTemp.vue
pages/aps/aps/addTemp.vue
+232
-0
api.js
pages/aps/aps/api.js
+22
-1
index.vue
pages/aps/aps/index.vue
+98
-4
temp.vue
pages/aps/aps/temp.vue
+141
-0
base.css
src/assets/css/base.css
+8
-0
No files found.
assets/css/base.less
View file @
35ce306d
...
@@ -233,6 +233,9 @@ html body {
...
@@ -233,6 +233,9 @@ html body {
.pl20 {
.pl20 {
padding-left: 20px
padding-left: 20px
}
}
.pt15 {
padding-top: 15px
}
.bnone {
.bnone {
border: none;
border: none;
...
...
components/page/opration.vue
View file @
35ce306d
...
@@ -16,70 +16,69 @@
...
@@ -16,70 +16,69 @@
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
name
:
'op'
,
name
:
"op"
,
props
:
{
props
:
{
icon
:{
icon
:
{
type
:
String
type
:
String
},
},
oprate
:
{
oprate
:
{
type
:
String
type
:
String
},
},
type
:
{
type
:
{
type
:
String
,
type
:
String
,
default
:
"text"
default
:
"text"
},
},
title
:{
title
:
{
type
:
String
type
:
String
},
},
msg
:{
msg
:
{
type
:
String
,
type
:
String
,
default
:
"确认要删除吗?"
default
:
"确认要删除吗?"
}
}
},
},
data
(){
data
()
{
return
{
return
{
text
:
""
,
text
:
""
,
css
:
"detail"
css
:
"detail"
}
}
;
},
},
created
(){
created
()
{
var
oprates
=
{
var
oprates
=
{
detail
:
"查看"
,
detail
:
"查看"
,
edit
:
"编辑"
,
edit
:
"编辑"
,
add
:
"添加"
,
add
:
"添加"
,
delete
:
"删除"
delete
:
"删除"
};
};
if
(
oprates
[
this
.
oprate
]){
if
(
oprates
[
this
.
oprate
])
{
this
.
text
=
oprates
[
this
.
oprate
]
this
.
text
=
oprates
[
this
.
oprate
];
this
.
css
=
this
.
oprate
;
this
.
css
=
this
.
oprate
;
}
else
if
(
this
.
oprate
)
{
}
else
if
(
this
.
oprate
)
{
this
.
css
=
this
.
oprate
;
this
.
css
=
this
.
oprate
;
}
else
if
(
this
.
type
==
'icon'
)
{
}
else
if
(
this
.
type
==
"icon"
)
{
this
.
css
=
'icon'
this
.
css
=
"icon"
;
}
}
},
},
methods
:{
methods
:
{
handler
(){
handler
()
{
if
(
this
.
oprate
==
"delete"
)
{
if
(
this
.
oprate
==
"delete"
)
{
this
.
$Modal
.
confirm
({
this
.
$Modal
.
confirm
({
title
:
'确认'
,
title
:
"确认"
,
content
:
'<p>'
+
this
.
msg
+
'</p>'
,
content
:
"<p>"
+
this
.
msg
+
"</p>"
,
onOk
:
()
=>
{
onOk
:
()
=>
{
this
.
$emit
(
"click"
,
event
)
this
.
$emit
(
"click"
,
event
);
}
}
});
});
}
else
{
}
else
{
this
.
$emit
(
"click"
,
event
)
this
.
$emit
(
"click"
,
event
);
}
}
}
}
}
}
}
}
;
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
a.op{
a.op
{
display: inline;
display: inline;
margin: 0 3px;
margin: 0 3px;
}
}
</
style
>
</
style
>
\ No newline at end of file
pages/aps/aps/addTemp.vue
0 → 100644
View file @
35ce306d
<
template
>
<div
class=
"parameter"
>
<div
v-if=
"load"
style=
"width:100px;margin:0 auto;padding-top:60px;"
>
<Spin
size=
"large"
></Spin>
</div>
<div
v-show=
"!load"
>
<Form
ref=
"form"
label-position=
"top"
:model=
"entity"
:rules=
"rules"
>
<Row
:gutter=
"24"
>
<Col
span=
"24"
style=
"height:80px;"
>
<FormItem
label=
"模板名称"
prop=
"tempName"
>
<Input
v-model=
"entity.tempName"
></Input>
</FormItem>
</Col>
<Col
span=
"24"
style=
"height:60px;"
>
<FormItem
label=
"模板描述"
>
{{
entity
.
tempInfo
}}
</FormItem>
</Col>
<Col
span=
"24"
>
<FormItem
label=
"排序规则"
></FormItem>
</Col>
</Row>
</Form>
<div>
<div
class=
"listFather"
v-for=
"(item,index) in tempDataList"
v-dragging=
"
{ item: item, list: tempDataList, group: 'item'}"
:key="item.name"
title="拖动上下移动"
>
<div>
<Icon
type=
"md-move"
/>
{{
index
+
1
}}
.
{{
item
.
name
}}
</div>
<div
class=
"listChildren"
v-for=
"(item1,index1) in item.sons"
v-dragging=
"
{ item: item1, list: item.sons, group: 'item1' }"
:key="index1"
>
<div>
<Icon
type=
"md-move"
/>
{{
index1
+
1
}}
.
{{
item1
.
name
}}
</div>
</div>
</div>
</div>
<Row>
<Col
span=
"24"
style=
"text-align:right;height:60px;line-height:60px"
>
<Button
type=
"primary"
@
click=
"handleSubmit"
>
确定
</Button>
<Button
@
click=
"handleClose"
class=
"ml20"
>
取消
</Button>
</Col>
</Row>
</div>
</div>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
data
()
{
return
{
entity
:
{
id
:
null
,
tempName
:
""
,
tempInfo
:
""
},
tempDataList
:
[],
tempInfo
:
""
,
listTemp
:
[],
listTempShort
:
[],
rules
:
{
tempName
:
[{
required
:
true
,
message
:
"必填"
,
trigger
:
"blur"
}]
},
load
:
true
};
},
props
:
{},
created
()
{},
mounted
()
{
this
.
$dragging
.
$on
(
"dragged"
,
({
value
})
=>
{
if
(
this
.
listTemp
.
length
<
1
&&
value
.
list
.
length
<
5
)
{
this
.
listTemp
=
this
.
tempDataList
;
this
.
listTempShort
=
value
.
list
;
this
.
listTemp
.
forEach
(
dataAdd1
=>
{
if
(
dataAdd1
.
sons
&&
dataAdd1
.
sons
.
length
>
0
)
{
dataAdd1
.
sons
=
[];
dataAdd1
.
sons
=
this
.
listTempShort
;
}
});
}
else
if
(
this
.
listTemp
.
length
>
1
&&
value
.
list
.
length
<
5
)
{
this
.
listTempShort
=
value
.
list
;
this
.
listTemp
.
forEach
(
dataAdd
=>
{
if
(
dataAdd
.
sons
&&
dataAdd
.
sons
.
length
>
0
)
{
dataAdd
.
sons
=
[];
dataAdd
.
sons
=
this
.
listTempShort
;
}
});
}
else
{
this
.
listTempShort
=
[];
this
.
listTemp
=
value
.
list
;
}
this
.
outInfo
(
this
.
listTemp
);
});
this
.
$dragging
.
$on
(
"dragend"
,
()
=>
{});
setTimeout
(()
=>
{
this
.
loadInfo
();
},
600
);
},
methods
:
{
//加载模板描述信息
loadInfo
()
{
let
tempList
=
[];
Api
.
addsorttemplateplus
().
then
(
r
=>
{
if
(
r
.
success
)
{
tempList
=
r
.
result
.
templateList
;
this
.
tempDataList
=
tempList
;
this
.
entity
.
id
=
r
.
result
.
id
;
this
.
entity
.
tempName
=
""
;
//this.entity.tempName = r.result.templateName;
this
.
outInfo
(
tempList
);
this
.
$emit
(
"changeStatu"
,
r
.
result
.
id
);
}
});
},
//返回模板描述信息
outInfo
(
list
)
{
this
.
tempInfo
=
""
;
list
.
forEach
(
data
=>
{
if
(
data
.
sons
&&
data
.
sons
.
length
>
0
)
{
let
dataInfo
=
""
;
data
.
sons
.
forEach
(
dataChild
=>
{
dataInfo
+=
dataChild
.
name
+
"-->"
;
});
dataInfo
=
dataInfo
.
substring
(
0
,
dataInfo
.
length
-
3
);
this
.
tempInfo
+=
data
.
name
.
substr
(
0
,
data
.
name
.
length
-
2
)
+
"【"
+
dataInfo
+
"】-->"
;
}
else
{
this
.
tempInfo
+=
data
.
name
.
substr
(
0
,
data
.
name
.
length
-
2
)
+
"-->"
;
}
});
this
.
load
=
false
;
this
.
tempInfo
=
this
.
tempInfo
.
substring
(
0
,
this
.
tempInfo
.
length
-
3
);
this
.
entity
.
tempInfo
=
this
.
tempInfo
;
},
handleSubmit
()
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
let
params
=
{
id
:
this
.
entity
.
id
,
templateName
:
this
.
entity
.
tempName
,
templateDesc
:
this
.
entity
.
tempInfo
,
templateList
:
this
.
listTemp
.
length
<
1
?
this
.
tempDataList
:
this
.
listTemp
};
Api
.
savesorttemplate
(
params
)
.
then
(
res
=>
{
if
(
res
.
success
&&
res
.
result
)
{
this
.
$Message
.
success
(
"新增成功"
);
let
paramsData
=
{
id
:
this
.
entity
.
id
,
name
:
this
.
entity
.
tempName
,
info
:
this
.
entity
.
tempInfo
};
this
.
$emit
(
"on-ok"
,
paramsData
);
this
.
$emit
(
"on-close"
);
this
.
$emit
(
"changeStatu"
,
0
);
}
else
{
this
.
$Message
.
error
(
"新增失败"
);
this
.
$emit
(
"on-close"
);
}
})
.
catch
(
e
=>
{
this
.
$Message
.
error
(
"数据异常!"
);
});
}
});
},
handleClose
()
{
let
params
=
{
id
:
this
.
entity
.
id
};
Api
.
removesorttemplate
(
params
).
then
(
r
=>
{
if
(
r
.
success
)
{
}
else
{
this
.
$Message
.
error
(
"删除失败"
);
}
});
this
.
$emit
(
"on-close"
);
},
l
(
key
)
{
let
vkey
=
"mes_op_task_plan_simulate"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
}
},
computed
:
{},
watch
:
{}
};
</
script
>
<
style
lang=
"less"
>
.parameter {
.ivu-form-item {
margin-bottom: 4px;
vertical-align: top;
zoom: 1;
}
.ivu-form .ivu-form-item-label {
font-weight: bold;
padding: 0;
}
.listFather {
padding: 5px 5px 0px 5px;
border-bottom: #ccc solid 1px;
line-height: 30px;
cursor: move;
}
.listFather:hover {
background: #e9f2fd;
}
.listChildren {
padding: 5px 5px 5px 20px;
border-bottom: #ccc dotted 1px;
line-height: 25px;
cursor: move;
}
.listChildren:hover {
background: #d3e6fb;
}
}
</
style
>
\ No newline at end of file
pages/aps/aps/api.js
View file @
35ce306d
...
@@ -84,5 +84,26 @@ export default {
...
@@ -84,5 +84,26 @@ export default {
apsupdate
(
params
)
{
apsupdate
(
params
)
{
return
Api
.
post
(
`
${
designUrl
}
/routingdetail/apsupdate `
,
params
);
return
Api
.
post
(
`
${
designUrl
}
/routingdetail/apsupdate `
,
params
);
},
},
//排序模板相关start-----
//获取排序规则下拉列表
getdropsortlist
()
{
return
Api
.
get
(
`
${
apsUrl
}
/apspoolappservices/getdropsortlist`
);
},
//点击新增初始化数据
addsorttemplateplus
(){
return
Api
.
post
(
`
${
apsUrl
}
/apspoolappservices/addsorttemplateplus`
);
},
//保存模板
savesorttemplate
(
params
)
{
return
Api
.
post
(
`
${
apsUrl
}
/apspoolappservices/savesorttemplate`
,
params
);
},
//使用排产规则
usesorttemplate
(
params
)
{
return
Api
.
post
(
`
${
apsUrl
}
/apspoolappservices/usesorttemplate `
,
params
);
},
//删除排产模板
removesorttemplate
(
params
){
return
Api
.
post
(
`
${
apsUrl
}
/apspoolappservices/removesorttemplate `
,
params
);
}
//排序模板相关end-----
}
}
pages/aps/aps/index.vue
View file @
35ce306d
...
@@ -15,7 +15,19 @@
...
@@ -15,7 +15,19 @@
>
>
<template
slot=
"easySearch"
></
template
>
<template
slot=
"easySearch"
></
template
>
<
template
slot=
"searchBack"
>
<
template
slot=
"searchBack"
>
<Select
placeholder=
"选择历史方案"
style=
"width: 150px;"
></Select>
<Select
placeholder=
"选择排序优先级"
v-model=
"tempValue"
style=
"width: 150px;"
@
on-change=
"tempValueChange"
clearable
>
<Option
v-for=
"(item,index) in listTemp"
:key=
"index"
:value=
"item.id"
:label=
"item.name"
></Option>
</Select>
<a
style=
"font-weight: bold;"
@
click=
"openaddModalTemp"
>
<Icon
type=
"md-color-palette"
size=
"14"
/>
自定义排序模板
</a>
<Select
placeholder=
"选择历史方案"
style=
"width: 150px;"
></Select>
<DatePicker
<DatePicker
type=
"date"
type=
"date"
placeholder=
"设置基准日期"
placeholder=
"设置基准日期"
...
@@ -42,6 +54,16 @@
...
@@ -42,6 +54,16 @@
<Button
type=
"primary"
class=
"mr10 ml10"
@
click=
"removeOk"
>
移出排产
</Button>
<Button
type=
"primary"
class=
"mr10 ml10"
@
click=
"removeOk"
>
移出排产
</Button>
</
template
>
</
template
>
</DataGrid>
</DataGrid>
<Modal
v-model=
"addModalTemp"
title=
"自定义排序模板"
footer-hide
width=
"1000"
class=
"tempModal"
@
on-cancel=
"tempCancel"
>
<Temp
:data=
"listTemp"
@
changeStatu=
"changeStatu"
ref=
"tempRef"
></Temp>
</Modal>
<Modal
v-model=
"addModal"
title=
"工序参数设置"
footer-hide
width=
"1000"
>
<Modal
v-model=
"addModal"
title=
"工序参数设置"
footer-hide
width=
"1000"
>
<Add
<Add
@
on-close=
"cancel"
@
on-close=
"cancel"
...
@@ -71,12 +93,14 @@
...
@@ -71,12 +93,14 @@
<
script
>
<
script
>
import
Api
from
"./api"
;
import
Api
from
"./api"
;
import
Add
from
"./add"
;
import
Add
from
"./add"
;
import
Temp
from
"./temp"
;
import
Expand
from
"./components/excute"
;
import
Expand
from
"./components/excute"
;
export
default
{
export
default
{
name
:
"list"
,
name
:
"list"
,
components
:
{
components
:
{
Add
,
Add
,
Expand
Expand
,
Temp
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -92,6 +116,7 @@ export default {
...
@@ -92,6 +116,7 @@ export default {
detailModal
:
false
,
detailModal
:
false
,
deletelModal
:
false
,
deletelModal
:
false
,
apsModal
:
false
,
apsModal
:
false
,
addModalTemp
:
false
,
list
:
[],
list
:
[],
curId
:
0
,
curId
:
0
,
columns
:
[
columns
:
[
...
@@ -310,11 +335,15 @@ export default {
...
@@ -310,11 +335,15 @@ export default {
count
:
0
//生产计划数量
count
:
0
//生产计划数量
},
},
//设置参数结束
//设置参数结束
circleModal
:
false
//进度条
circleModal
:
false
,
//进度条
listTemp
:
[],
//自定义模板排序下拉框列表
tempValue
:
null
,
tempStatu
:
0
//新建模型时传过来的id值
};
};
},
},
mounted
()
{
mounted
()
{
this
.
loadList
();
this
.
loadList
();
this
.
loadTemp
();
},
},
async
fetch
({
store
,
params
})
{
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
...
@@ -328,6 +357,15 @@ export default {
...
@@ -328,6 +357,15 @@ export default {
}
}
});
});
},
},
loadTemp
()
{
Api
.
getdropsortlist
().
then
(
resDrop
=>
{
//加载排序模板列表
if
(
resDrop
.
success
)
{
this
.
listTemp
=
resDrop
.
result
;
}
});
},
addOk
()
{
addOk
()
{
this
.
list
=
[];
this
.
list
=
[];
this
.
loadList
();
this
.
loadList
();
...
@@ -545,7 +583,49 @@ export default {
...
@@ -545,7 +583,49 @@ export default {
};
};
}
}
this
.
addModal
=
true
;
this
.
addModal
=
true
;
},
//自定义排序模板相关start------
//打开自定义排序模板窗口
openaddModalTemp
()
{
this
.
addModalTemp
=
true
;
},
tempCancel
()
{
if
(
this
.
tempStatu
!=
0
)
{
let
params
=
{
id
:
this
.
tempStatu
};
Api
.
removesorttemplate
(
params
).
then
(
r
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
tempRef
.
cancel
()
}
else
{
this
.
$Message
.
error
(
"删除失败"
);
}
}
});
}
},
changeStatu
(
val
)
{
this
.
tempStatu
=
val
;
},
//选择排序模板
tempValueChange
(
val
)
{
let
params
=
{
id
:
val
};
Api
.
usesorttemplate
(
params
).
then
(
r
=>
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"设置成功"
);
this
.
list
=
[];
this
.
loadList
();
}
else
{
this
.
$Message
.
error
(
"设置失败"
);
}
}).
catch
(
e
=>
{
this
.
$Message
.
error
(
"访问失败"
);
});
},
//自定义排序模板相关end------
}
}
};
};
</
script
>
</
script
>
...
@@ -581,4 +661,18 @@ export default {
...
@@ -581,4 +661,18 @@ export default {
top: 0;
top: 0;
}
}
}
}
.tempModal {
.ivu-modal-body {
padding: 16px;
font-size: 14px;
line-height: 1.5;
padding-top: 2px;
padding-bottom: 0px;
}
.ivu-modal-footer {
border-top: none;
padding: 12px 18px 12px 18px;
text-align: right;
}
}
</
style
>
</
style
>
pages/aps/aps/temp.vue
0 → 100644
View file @
35ce306d
<
template
>
<div>
<Row>
<Col
span=
"6"
class=
"pt15"
>
<DataGrid
:columns=
"columnsTemp"
ref=
"gridTemp"
:data=
"data"
:high=
"false"
:page=
"false"
:batch=
"false"
:easy=
"false"
:set=
"false"
:height=
"575"
:tool=
"false"
></DataGrid>
</Col>
<Col
span=
"18"
>
<Component
:is=
"add"
@
on-close=
"cancel"
@
on-ok=
"addData"
@
changeStatu=
"changeStatu"
></Component>
</Col>
</Row>
<Row>
<Col
span=
"6"
class=
"h50 tr"
>
<Button
type=
"primary"
@
click=
"addTempModal"
>
新增模板
</Button>
</Col>
<Col
span=
"18"
></Col>
</Row>
</div>
</
template
>
<
script
>
import
Api
from
"./api"
;
export
default
{
data
()
{
return
{
add
:
null
,
tempModal
:
false
,
columnsTemp
:
[
{
key
:
"name"
,
title
:
"模板名称"
,
align
:
"left"
,
render
:
(
h
,
params
)
=>
{
return
h
(
"Tooltip"
,
{
props
:
{
content
:
params
.
row
.
name
+
":"
+
params
.
row
.
desc
,
placement
:
"left-start"
,
transfer
:
true
,
maxWidth
:
"800"
}
},
params
.
row
.
name
);
}
},
{
title
:
" "
,
key
:
"action"
,
width
:
60
,
align
:
"center"
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
props
:
{
icon
:
"ios-trash"
,
type
:
"icon"
,
title
:
"删除模板"
,
oprate
:
"delete"
,
msg
:
"确定删除模板?"
},
on
:
{
click
:
()
=>
this
.
remove
(
params
.
row
)
}
})
]);
}
}
]
};
},
props
:
{
data
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
}
}
},
created
()
{},
mounted
()
{},
methods
:
{
addTempModal
()
{
if
(
this
.
add
==
null
)
{
this
.
add
=
()
=>
import
(
"./addTemp"
);
}
},
handleSubmit
()
{
this
.
$refs
.
form
.
validate
(
valid
=>
{
if
(
valid
)
{
}
});
},
//删除模板
remove
(
row
)
{
let
params
=
{
id
:
row
.
id
};
Api
.
removesorttemplate
(
params
).
then
(
r
=>
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"删除成功"
);
this
.
data
.
splice
(
row
.
_index
,
1
);
}
else
{
this
.
$Message
.
success
(
"删除失败"
);
}
});
},
handleClose
()
{
this
.
$emit
(
"on-close"
);
},
addData
(
obj
)
{
//this.data.splice(0, 0,obj);
this
.
data
.
push
(
obj
);
},
cancel
()
{
this
.
add
=
null
;
},
changeStatu
(
val
)
{
this
.
$emit
(
"changeStatu"
,
val
);
},
l
(
key
)
{
let
vkey
=
"mes_op_task_plan_simulate"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
}
},
computed
:
{},
watch
:
{}
};
</
script
>
<
style
lang=
"less"
>
</
style
>
\ No newline at end of file
src/assets/css/base.css
View file @
35ce306d
...
@@ -172,6 +172,9 @@ html body {
...
@@ -172,6 +172,9 @@ html body {
.pl20
{
.pl20
{
padding-left
:
20px
;
padding-left
:
20px
;
}
}
.pt15
{
padding-top
:
15px
;
}
.bnone
{
.bnone
{
border
:
none
;
border
:
none
;
}
}
...
@@ -728,6 +731,11 @@ html [type=button] {
...
@@ -728,6 +731,11 @@ html [type=button] {
font-size
:
24px
;
font-size
:
24px
;
color
:
#249e91
;
color
:
#249e91
;
}
}
.icon_box
a
.icon
.ivu-icon-ios-cog
{
font-weight
:
bold
;
font-size
:
24px
;
color
:
#249e91
;
}
.body-box
.bj-box
{
.body-box
.bj-box
{
position
:
relative
;
position
:
relative
;
height
:
45px
;
height
:
45px
;
...
...
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