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 b66a9a53
authored
Apr 29, 2024
by
‘july-fu’
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 企业中台服务清单
1 parent
df448725
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
230 additions
and
87 deletions
src/api/comCenterServeListNew.js
src/router/index.js
src/views/comCenterServeListNew/components/dataEntity.vue
src/views/comCenterServeListNew/components/editService.vue
src/views/comCenterServeListNew/components/serviceList.vue
src/views/comCenterServeListNew/options.js
src/api/comCenterServeListNew.js
View file @
b66a9a5
...
@@ -8,3 +8,11 @@ import {
...
@@ -8,3 +8,11 @@ import {
export
function
getServiceList
(
data
)
{
export
function
getServiceList
(
data
)
{
return
post
(
EADC_ARRCHITECTURE
+
"/arc-aby-iy/qryListPage"
,
data
);
return
post
(
EADC_ARRCHITECTURE
+
"/arc-aby-iy/qryListPage"
,
data
);
}
}
export
function
addService
(
data
)
{
return
post
(
EADC_ARRCHITECTURE
+
"/arc-aby-iy/add"
,
data
);
}
export
function
getDataList
(
data
)
{
return
post
(
EADC_ARRCHITECTURE
+
"/arc-aby-ast/qryDataListPage"
,
data
);
}
src/router/index.js
View file @
b66a9a5
...
@@ -215,6 +215,15 @@ export const routes = [
...
@@ -215,6 +215,15 @@ export const routes = [
title
:
"系统架构资产管理"
,
title
:
"系统架构资产管理"
,
},
},
},
},
{
path
:
"/main/comCenterServeListOld/"
,
//企业中台服务清单
name
:
"comCenterServeList"
,
component
:
()
=>
import
(
"@/views/comCenterServeList/index.vue"
),
meta
:
{
title
:
"企业中台服务清单"
,
},
},
{
{
path
:
"/main/comCenterServeList/"
,
//企业中台服务清单
path
:
"/main/comCenterServeList/"
,
//企业中台服务清单
name
:
"comCenterServeList"
,
name
:
"comCenterServeList"
,
...
...
src/views/comCenterServeListNew/components/dataEntity.vue
View file @
b66a9a5
<
template
>
<
template
>
<div
class=
"dataEntityWrapper"
>
<div
class=
"dataEntityWrapper"
>
<ETable
ref=
"ETableRef"
title=
"数据实体信息列表"
:tableRef
.
sync=
"tableRef"
:height=
"430"
tableKey=
"dataEntity"
:data=
"data"
<ETable
ref=
"ETableRef"
title=
"数据实体信息列表"
:tableRef
.
sync=
"tableRef"
:height=
"430"
tableKey=
"dataEntity"
:data=
"data"
:columns=
"columns"
:indexMethod=
"true"
v-loading=
"loading"
:operateList=
"operateList"
:tableBtnList=
"tableBtnList"
:columns=
"columns"
:indexMethod=
"true"
v-loading=
"loading"
:operateList=
"operateList"
@
sizeChange=
"handlerSizeChange"
@
currentChange=
"handlerCurrentChange"
:pager=
"pager"
>
@
sizeChange=
"handlerSizeChange"
@
currentChange=
"handlerCurrentChange"
:pager=
"pager"
>
<SearchForm
slot=
"header"
:formOptions=
"formOptions"
@
onSearch=
"getList"
@
onReset=
"reset"
></SearchForm>
<el-form
class=
"search"
:model=
"form"
slot=
"header"
>
<el-row>
<el-col
:span=
"4"
>
<el-form-item
label=
"服务名称"
>
<el-input
class=
"w180"
size=
"mini"
type=
"text"
placeholder=
"服务名称"
v-model=
"form.abilityName"
maxlength=
"50"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
label=
"中台类型"
>
<el-select
class=
"w180"
size=
"mini"
v-model=
"form.midGroundType"
placeholder=
"中台类型"
>
<el-option
v-for=
"item in midGroundTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
label=
"中台名称"
>
<el-select
class=
"w180"
size=
"mini"
v-model=
"form.midGroundName"
placeholder=
"中台名称"
>
<el-option
v-for=
"item in midGroundNameOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
label=
"发布时间"
>
<el-date-picker
class=
"w180"
size=
"mini"
v-model=
"form.statTime"
value-format=
"yyyy-MM-dd"
type=
"date"
placeholder=
"发布时间"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<div
class=
"btn-box"
>
<el-button
size=
"mini"
type=
"primary"
class=
"btn-search"
icon=
"el-icon-search"
@
click=
"search"
v-preventReClick
>
查询
</el-button>
<el-button
size=
"mini"
type=
"default"
class=
"btn-reset"
icon=
"el-icon-refresh"
@
click=
"reset"
>
重置
</el-button>
</div>
</el-col>
</el-row>
</el-form>
</ETable>
</ETable>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
stateOptions
,
serverTypeOptions
,
abilitySourceOptions
,
midGroundNameOptions
,
midGroundTypeOptions
}
from
'../options.js'
import
{
getDataList
}
from
'@/api/comCenterServeListNew'
import
SearchForm
from
"@/components/SearchForm.vue"
;
import
SearchForm
from
"@/components/SearchForm.vue"
;
import
ETable
from
"@/newComponents/ETable/index.vue"
;
import
ETable
from
"@/newComponents/ETable/index.vue"
;
import
tableMixin
from
"@/mixins/tableMixin"
;
import
tableMixin
from
"@/mixins/tableMixin"
;
...
@@ -18,47 +62,17 @@ export default {
...
@@ -18,47 +62,17 @@ export default {
mixins
:
[
tableMixin
()],
mixins
:
[
tableMixin
()],
data
()
{
data
()
{
return
{
return
{
midGroundNameOptions
,
midGroundTypeOptions
,
loading
:
false
,
loading
:
false
,
tableRef
:
null
,
tableRef
:
null
,
form
:
{
form
:
{
name
:
''
,
abilityName
:
""
,
date
:
''
,
midGroundName
:
""
,
typeName
:
''
,
midGroundType
:
""
,
type
:
''
statTime
:
""
},
},
selectionList
:
[],
selectionList
:
[],
formOptions
:
[
{
label
:
"服务名称"
,
prop
:
"name"
,
element
:
"el-input"
,
placeholder
:
"服务名称"
,
},
{
label
:
"统计日期"
,
prop
:
"buildType"
,
element
:
"el-date-picker"
,
type
:
'date'
,
valueFormat
:
'yyyy-MM-dd'
,
element
:
'el-date-picker'
,
initValue
:
new
Date
().
format
(
'yyyy-MM-dd'
),
placeholder
:
'统计日期'
,
},
{
label
:
"中台类型"
,
prop
:
"buildType"
,
element
:
"el-select"
,
dictType
:
"build_type"
,
placeholder
:
"中台类型"
,
},
{
label
:
"中台名称"
,
prop
:
"buildType"
,
element
:
"el-select"
,
dictType
:
"build_type"
,
placeholder
:
"中台名称"
,
},
],
operateList
:
[
operateList
:
[
{
{
label
:
"新增"
,
label
:
"新增"
,
...
@@ -92,7 +106,7 @@ export default {
...
@@ -92,7 +106,7 @@ export default {
},
},
],
],
pager
:
{
pager
:
{
current
:
2
,
current
:
1
,
size
:
10
,
size
:
10
,
total
:
100
,
total
:
100
,
sizes
:
[
10
,
20
,
50
,
100
],
sizes
:
[
10
,
20
,
50
,
100
],
...
@@ -100,7 +114,7 @@ export default {
...
@@ -100,7 +114,7 @@ export default {
columns
:
[
columns
:
[
{
{
label
:
"中台服务编码"
,
label
:
"中台服务编码"
,
prop
:
"
buildTyp
e"
,
prop
:
"
abilityCod
e"
,
showOverflowTooltip
:
true
,
showOverflowTooltip
:
true
,
align
:
"center"
,
align
:
"center"
,
fixed
:
"left"
,
fixed
:
"left"
,
...
@@ -108,70 +122,96 @@ export default {
...
@@ -108,70 +122,96 @@ export default {
},
},
{
{
label
:
"中台服务名称"
,
label
:
"中台服务名称"
,
prop
:
"
buildType2
"
,
prop
:
"
abilityName
"
,
minWidth
:
140
,
minWidth
:
140
,
showOverflowTooltip
:
true
,
showOverflowTooltip
:
true
,
align
:
"center"
,
align
:
"center"
,
},
},
{
{
label
:
"物理实体名称"
,
label
:
"物理实体名称"
,
prop
:
"
buildType2
"
,
prop
:
"
assetName
"
,
minWidth
:
120
,
minWidth
:
120
,
showOverflowTooltip
:
true
,
showOverflowTooltip
:
true
,
align
:
"center"
,
align
:
"center"
,
},
},
{
{
label
:
"物理实体英文名称"
,
label
:
"物理实体英文名称"
,
prop
:
"
buildType2
"
,
prop
:
"
fieldsValue
"
,
minWidth
:
120
,
minWidth
:
120
,
showOverflowTooltip
:
true
,
showOverflowTooltip
:
true
,
align
:
"center"
,
align
:
"center"
,
render
:
(
h
,
params
)
=>
{
let
arr
=
params
.
fieldsValue
?
JSON
.
parse
(
params
.
fieldsValue
)
:
[]
let
obj
=
arr
.
find
(
i
=>
i
.
cnName
==
'物理实体英文名称'
)
let
enName
=
obj
?
obj
.
value_
:
'--'
return
h
(
"span"
,
{},
enName
);
},
},
},
{
{
label
:
"物理实体编码"
,
label
:
"物理实体编码"
,
prop
:
"
buildType2
"
,
prop
:
"
fieldsValue
"
,
minWidth
:
120
,
minWidth
:
120
,
showOverflowTooltip
:
true
,
showOverflowTooltip
:
true
,
align
:
"center"
,
align
:
"center"
,
render
:
(
h
,
params
)
=>
{
let
arr
=
params
.
fieldsValue
?
JSON
.
parse
(
params
.
fieldsValue
)
:
[]
let
obj
=
arr
.
find
(
i
=>
i
.
cnName
==
'物理实体编码'
)
let
enName
=
obj
?
obj
.
value_
:
'--'
return
h
(
"span"
,
{},
enName
);
},
},
},
{
{
label
:
"逻辑实体"
,
label
:
"逻辑实体"
,
prop
:
"
buildType2
"
,
prop
:
"
parentAssetName
"
,
minWidth
:
120
,
minWidth
:
120
,
showOverflowTooltip
:
true
,
showOverflowTooltip
:
true
,
align
:
"center"
,
align
:
"center"
,
},
},
{
{
label
:
"概念实体"
,
label
:
"概念实体"
,
prop
:
"
buildType2
"
,
prop
:
"
parOfParAssetName
"
,
minWidth
:
120
,
minWidth
:
120
,
showOverflowTooltip
:
true
,
showOverflowTooltip
:
true
,
align
:
"center"
,
align
:
"center"
,
},
},
],
],
tableBtnList
:
[
data
:
[],
{
label
:
"编辑"
,
type
:
"primary"
,
size
:
"mini"
,
icon
:
"el-icon-circle-plus-outline"
,
click
:
(
row
,
index
)
=>
{
console
.
log
(
"编辑"
,
row
);
},
},
],
data
:
[{
buildType2
:
11
}],
};
};
},
},
mounted
()
{
},
methods
:
{
methods
:
{
doLayout
()
{
doLayout
()
{
this
.
tableRef
.
doLayout
()
this
.
tableRef
.
doLayout
()
},
},
getList
()
{
async
getList
()
{
console
.
log
(
"getList"
);
let
params
=
{
...
this
.
form
,
pageSize
:
this
.
pager
.
size
,
current
:
this
.
pager
.
current
}
this
.
loading
=
true
const
res
=
await
getDataList
(
params
).
catch
(()
=>
{
this
.
pager
.
total
=
0
this
.
loading
=
false
})
this
.
loading
=
false
console
.
log
(
'getList'
,
res
)
if
(
res
.
code
==
200
)
{
this
.
data
=
res
.
data
.
records
this
.
pager
.
total
=
res
.
data
.
total
}
},
search
()
{
this
.
pager
.
current
=
1
this
.
pager
.
total
=
0
this
.
getList
()
},
reset
()
{
this
.
pager
.
current
=
1
this
.
pager
.
total
=
0
this
.
form
=
{
abilityName
:
""
,
midGroundName
:
""
,
midGroundType
:
""
,
statTime
:
""
}
this
.
getList
()
},
},
reset
()
{
},
handleSelectionChange
(
val
)
{
handleSelectionChange
(
val
)
{
this
.
selectionList
=
val
;
this
.
selectionList
=
val
;
},
},
...
...
src/views/comCenterServeListNew/components/editService.vue
View file @
b66a9a5
<
template
>
<
template
>
<el-dialog
:title=
"title"
custom-class=
"comDialog"
:visible
.
sync=
"show"
:center=
"false"
:close-on-click-modal=
"false"
<el-dialog
:title=
"title"
custom-class=
"comDialog"
:visible
.
sync=
"show"
:center=
"false"
:close-on-click-modal=
"false"
width=
"
8
0%"
@
close=
"close"
>
width=
"
6
0%"
@
close=
"close"
>
<el-form
:model=
"form"
:rules=
"rules"
ref=
"formRef"
label-width=
"120px"
>
<el-form
:model=
"form"
:rules=
"rules"
ref=
"formRef"
label-width=
"120px"
>
<el-row>
<el-row>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
...
@@ -16,9 +16,10 @@
...
@@ -16,9 +16,10 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"服务类型"
prop=
"serveType"
>
<el-form-item
label=
"资源类型"
prop=
"abilityType"
>
<el-select
class=
"w180"
v-model=
"form.serveType"
placeholder=
"请选择"
>
<el-select
class=
"w180"
v-model=
"form.abilityType"
placeholder=
"请选择"
<el-option
v-for=
"item in serverTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
@
change=
"(val) =>
{ comChange(val, 'abilityType') }">
<el-option
v-for=
"item in abilitySourceOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
...
@@ -29,17 +30,21 @@
...
@@ -29,17 +30,21 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"中台类型"
prop=
"content"
>
<el-form-item
label=
"中台类型"
prop=
"midGroundType"
>
<el-select
class=
"w180"
v-model=
"value"
placeholder=
"请选择"
>
<el-select
class=
"w180"
v-model=
"form.midGroundType"
placeholder=
"中台类型"
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
@
change=
"(val) =>
{ comChange(val, 'midGroundType') }">
<el-option
v-for=
"item in midGroundTypeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"中台名称"
prop=
"content"
>
<el-form-item
label=
"中台名称"
prop=
"midPlatformId"
>
<el-input
class=
"w180"
type=
"textarea"
:rows=
"3"
maxlength=
"200"
show-word-limit
placeholder=
"请输入内容"
<el-select
class=
"w180"
v-model=
"form.midPlatformId"
placeholder=
"中台名称"
v-model=
"form.content"
></el-input>
@
change=
"(val) =>
{ comChange(val, 'midPlatformId') }">
<el-option
v-for=
"item in midGroundNameOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
...
@@ -47,32 +52,98 @@
...
@@ -47,32 +52,98 @@
<span
slot=
"footer"
>
<span
slot=
"footer"
>
<el-button
@
click=
"close"
>
取 消
</el-button>
<el-button
@
click=
"close"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
保 存
</el-button>
<el-button
type=
"primary"
@
click=
"submit"
>
保 存
</el-button>
<el-button
type=
"primary"
@
click=
"
submit
"
>
发 布
</el-button>
<el-button
type=
"primary"
@
click=
"
release
"
>
发 布
</el-button>
</span>
</span>
</el-dialog>
</el-dialog>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
serverTypeOptions
,
abilitySourceOptions
,
midGroundNameOptions
,
midGroundTypeOptions
}
from
'../options.js'
import
{
serverTypeOptions
,
abilitySourceOptions
,
midGroundNameOptions
,
midGroundTypeOptions
,
}
from
"../options.js"
;
import
{
addService
}
from
'@/api/comCenterServeListNew'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
loading
:
false
,
serverTypeOptions
,
serverTypeOptions
,
abilitySourceOptions
,
abilitySourceOptions
,
midGroundNameOptions
,
midGroundNameOptions
,
midGroundTypeOptions
,
midGroundTypeOptions
,
show
:
false
,
show
:
false
,
title
:
"新增"
,
title
:
"新增
中台服务
"
,
form
:
{
form
:
{
abilityCode
:
undefined
,
// 中台服务编码 false
abilityCode
:
undefined
,
abilityName
:
undefined
,
// 中台服务名称 false
abilityName
:
undefined
,
inventoryName
:
undefined
,
abilityType
:
undefined
,
// abilitySource: "1",
midGroundId
:
undefined
,
midPlatformName
:
undefined
,
midGroundName
:
undefined
,
midPlatformId
:
undefined
,
module
:
undefined
,
state
:
2
,
},
rules
:
{
abilityName
:
{
required
:
true
,
message
:
'中台服务名称不能为空'
,
trigger
:
'blur'
},
abilityCode
:
{
required
:
true
,
message
:
'中台服务编码不能为空'
,
trigger
:
'blur'
},
abilityType
:
{
required
:
true
,
message
:
'资源类型不能为空'
,
trigger
:
'blur'
},
module
:
{
required
:
true
,
message
:
'模块不能为空'
,
trigger
:
'blur'
},
midGroundType
:
{
required
:
true
,
message
:
'中台类型不能为空'
,
trigger
:
'blur'
},
midPlatformId
:
{
required
:
true
,
message
:
'中台名称不能为空'
,
trigger
:
'blur'
}
},
},
rules
:
{},
};
};
},
},
methods
:
{
methods
:
{
close
()
{
comChange
(
val
,
str
)
{
let
obj
switch
(
str
)
{
case
'abilityType'
:
obj
=
val
?
this
.
abilitySourceOptions
.
find
(
i
=>
i
.
value
==
val
)
:
''
this
.
form
.
inventoryName
=
obj
?
obj
.
label
:
''
;
break
;
case
'midGroundType'
:
obj
=
val
?
this
.
midGroundTypeOptions
.
find
(
i
=>
i
.
value
==
val
)
:
''
this
.
form
.
midGroundName
=
obj
?
obj
.
label
:
''
;
break
;
case
'midPlatformId'
:
obj
=
val
?
this
.
midGroundNameOptions
.
find
(
i
=>
i
.
value
==
val
)
:
''
this
.
form
.
midPlatformName
=
obj
?
obj
.
label
:
''
;
break
;
default
:
return
}
},
async
close
()
{
await
this
.
$refs
.
formRef
.
resetFields
()
this
.
show
=
false
;
this
.
show
=
false
;
},
},
open
(
row
)
{
open
(
row
)
{
...
@@ -80,15 +151,25 @@ export default {
...
@@ -80,15 +151,25 @@ export default {
this
.
show
=
true
;
this
.
show
=
true
;
},
},
submit
()
{
submit
()
{
this
.
$refs
.
formRef
.
validate
((
valid
)
=>
{
this
.
$refs
.
formRef
.
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
this
.
loading
=
true
const
res
=
await
addService
(
this
.
form
).
catch
(()
=>
{
this
.
loading
=
false
})
this
.
loading
=
false
console
.
log
(
res
)
if
(
res
.
code
==
200
)
{
this
.
$message
.
success
(
'新增成功'
)
this
.
$emit
(
"submit"
);
this
.
$emit
(
"submit"
);
this
.
close
();
this
.
close
();
}
}
else
{
}
else
{
return
false
;
return
false
;
}
}
});
});
},
},
release
()
{
},
},
},
};
};
</
script
>
</
script
>
...
@@ -96,4 +177,10 @@ export default {
...
@@ -96,4 +177,10 @@ export default {
.w180
{
.w180
{
width
:
180px
;
width
:
180px
;
}
}
/
deep
/
.el-form-item__content
{
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
}
</
style
>
</
style
>
src/views/comCenterServeListNew/components/serviceList.vue
View file @
b66a9a5
...
@@ -88,7 +88,7 @@
...
@@ -88,7 +88,7 @@
</el-dialog>
</el-dialog>
<!-- edit -->
<!-- edit -->
<
!-- <EditService ref="EditServiceRef" @submit="getList" /> --
>
<
EditService
ref=
"EditServiceRef"
@
submit=
"search"
/
>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
...
@@ -449,7 +449,6 @@ export default {
...
@@ -449,7 +449,6 @@ export default {
this
.
data
=
res
.
data
.
records
this
.
data
=
res
.
data
.
records
this
.
pager
.
total
=
res
.
data
.
total
this
.
pager
.
total
=
res
.
data
.
total
}
}
},
},
search
()
{
search
()
{
this
.
pager
.
current
=
1
this
.
pager
.
current
=
1
...
...
src/views/comCenterServeListNew/options.js
View file @
b66a9a5
...
@@ -66,19 +66,19 @@ export const abilitySourceOptions = [
...
@@ -66,19 +66,19 @@ export const abilitySourceOptions = [
export
const
midGroundNameOptions
=
[
export
const
midGroundNameOptions
=
[
{
{
label
:
"项目管理业务中台"
,
label
:
"项目管理业务中台"
,
value
:
"
项目管理业务中台
"
,
value
:
"
1
"
,
},
},
{
{
label
:
"电网资源业务中台"
,
label
:
"电网资源业务中台"
,
value
:
"
电网资源业务中台
"
,
value
:
"
2
"
,
},
},
{
{
label
:
"客户服务业务中台"
,
label
:
"客户服务业务中台"
,
value
:
"
客户服务业务中台
"
,
value
:
"
3
"
,
},
},
{
{
label
:
"财务管理业务中台"
,
label
:
"财务管理业务中台"
,
value
:
"
财务管理业务中台
"
,
value
:
"
4
"
,
},
},
];
];
...
...
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