Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mobi
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
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
wbx-PCAndMobi
mobi
Commits
14aeb7f4
Commit
14aeb7f4
authored
May 21, 2021
by
程卓
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://git.omniview.pro/fangdi/housemanage/web/majorproject
into dev
parents
9b69b2d1
b5e55149
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1401 additions
and
11 deletions
+1401
-11
labelNone.png
src/assets/icon/labelNone.png
+0
-0
routes.js
src/router/routes.js
+8
-0
api.js
src/server/api.js
+22
-2
basicInfoByLabel.vue
src/views/houseData/basicInfoByLabel.vue
+1089
-0
labelList.vue
src/views/label/labelList.vue
+148
-0
labelRightSide.vue
src/views/label/labelRightSide.vue
+10
-9
labelRightSideEmpty.vue
src/views/label/labelRightSideEmpty.vue
+18
-0
parentLabelRightPanel.vue
src/views/label/parentLabelRightPanel.vue
+106
-0
No files found.
src/assets/icon/labelNone.png
0 → 100644
View file @
14aeb7f4
8.46 KB
src/router/routes.js
View file @
14aeb7f4
...
...
@@ -140,12 +140,20 @@ const appRoutes = [
},
]
},
{
// 标签管理
path
:
'/systemManagement/lvot'
,
name
:
'lvot'
,
component
:
resolve
=>
require
([
'@/views/label/labelList'
],
resolve
),
//Tbls,
meta
:
{
title
:
'标签管理'
,
menuPath
:
true
,
menuIcon
:
'setting'
,
hideInBread
:
false
,
},
},
]
},
{
path
:
'/house'
,
name
:
'house'
,
component
:
resolve
=>
require
([
'@/components/Layout/content-wrapper'
],
resolve
),
// ContentWrapper,
meta
:
{
title
:
'住宅信息'
,
menuPath
:
true
,
menuIcon
:
'home'
,
hideInBread
:
true
,
requirePerm
:
false
,
authCode
:
'0001'
},
children
:
[
{
path
:
'/houseData/basicInfoByLabel'
,
name
:
'basicInfoByLabel'
,
component
:
resolve
=>
require
([
'@/views/houseData/basicInfoByLabel'
],
resolve
),
//basicInfo,
meta
:
{
title
:
'小区列表-标签'
,
menuPath
:
true
,
hideInBread
:
false
,
},
},
{
// 小区列表
path
:
'/houseData/basicInfo'
,
name
:
'basicInfo'
,
component
:
resolve
=>
require
([
'@/views/houseData/basicInfo'
],
resolve
),
//basicInfo,
meta
:
{
title
:
'住宅小区'
,
menuPath
:
true
,
hideInBread
:
false
,
authCode
:
'000101'
,
menuIcon
:
'home'
},
...
...
src/server/api.js
View file @
14aeb7f4
...
...
@@ -37,10 +37,11 @@ case 'huangpu-prod':
default
:
// 默认环境下(开发环境)
// BASE_URL = 'http://31.0.161.39/apiv2'
// BASE_URL = 'http://211.136.105.193/apiv2'
// BASE_URL = 'http://yangpu-hm.omniview.pro/api/v2'
BASE_URL
=
'http://yangpu-hm.omniview.pro/api/v2'
// BASE_URL = 'http://huangpu.hm.omniview.pro/api/v2'
// BASE_URL = 'http://xuhui.hm.omniview.pro/api/v2'
// BASE_URL = 'http://pudong.hm.omniview.pro/api/v2'
// BASE_URL = 'http://xuhui.hm.omniview.pro/api/v2'
BASE_URL
=
'http://yangpu-hm.omniview.pro/api/v2'
// BASE_URL = 'http://211.136.105.193/apiv2'
break
}
...
...
@@ -185,6 +186,10 @@ export default {
GET_USER_PEIMISSION
:
'/service-permission/user/perms'
,
// 当前用户角色权限树 -- 传userId
GET_ALL_PEIMISSION
:
'/service-permission/perms'
,
// 全部角色权限树
GET_ALL_ROLE
:
'/service-permission/menu/tree'
,
//获取权限
GET_PREMSPOINT_LIST
:
'/service-permission/perm/points'
,
//获取功能点清单
POST_PREMSBRANCH
:
'/service-permission/perm/perm'
,
//单个新增权限分支
DELETE_PREMSPOINT
:
'/service-permission/perm/point/{id}'
,
//删除功能点
SYSTEM_LIST_ALL_GET
:
'/service-user/user/systems'
,
//查询系统列表
GET_USER_CODE
:
'/service-permission/user/menus/code'
,
//获取用户权限
GET_USER_PERM
:
'/service-permission/user/menus/{id}'
,
...
...
@@ -209,4 +214,19 @@ export default {
GET_RIZHI_INFO
:
'/service-log/operateRecord/{id}'
,
//日志详情
GET_XIAOQUTOTAL
:
'/service-basicdatasync-ddd/summary/community/totare'
,
//查询小区住宅面积,总楼栋数,总户数信息
GET_LABEL_LIST
:
'/service-customkey-ddd/label/tree'
,
// 获取标签列表
GET_LABEL_DETAIL
:
'/service-customkey-ddd/label/{id}'
,
// 查看标签详情
DELETE_SINGLE_LABEL
:
'/service-customkey-ddd/label/{id}'
,
// 根据id删除某个标签
POST_SINGLE_LABEL
:
'/service-customkey-ddd/label'
,
// 新增标签
PUT_LABEL_INFO
:
'/service-customkey-ddd/label/{id}'
,
// 修改标签信息
POST_AVAILABLE_KEY
:
'/service-customkey-ddd/entityKeyDic'
,
// 可查询字段新增
PUT_AVAILABLE_KEY
:
'/service-customkey-ddd/entityKeyDic/{id}'
,
// 可查询字段修改
GET_AVAILABLE_KEY_LIST
:
'/service-customkey-ddd/entityKeyDics'
,
// 可查询字段列表
DELETE_AVAILABLE_KEY
:
'/service-customkey-ddd/entityKeyDic/{id}'
,
// 删除字段
GET_SINGLE_KEY_INFO
:
'/service-customkey-ddd/entityKeyDic/{id}'
,
//可查询字段详情
GET_LABEL_BIND_FILTER_RESULT
:
'/service-customkey-ddd/labelResource'
,
// 点击保存后查询是否有结果,有结果则调用绑定接口
POST_LABEL_RESULT_PREVIEW
:
'/service-customkey-ddd/findLabelObject'
,
// 标签预览
POST_LABEL_CREATE_CONFIRM
:
'/service-customkey-ddd/label/confirm'
,
GET_ID_INFO_BY_LABEL
:
'/service-customkey-ddd/label/resource/datas'
,
GET_WY_AND_YWH_LIST
:
'/service-customkey-ddd/datas'
}
src/views/houseData/basicInfoByLabel.vue
0 → 100644
View file @
14aeb7f4
This diff is collapsed.
Click to expand it.
src/views/label/labelList.vue
0 → 100644
View file @
14aeb7f4
<
template
>
<div
class=
"routerWapper"
>
<div
class=
"portalDetailTitle"
v-if=
"$route.name=='lvot'"
>
<span
class=
"title"
>
标签维护
</span>
<!--
{{
currentState
}}
-->
<div
class=
"detailOperations"
>
<a-button
@
click=
"backPage"
>
返回
</a-button>
</div>
</div>
<div
class=
"layoutMargin layoutPadding"
v-if=
"$route.name == 'lvot'"
>
<a-row
v-if=
"$route.name=='lvot'"
>
<a-col
:span=
"4"
style=
"border-right:1px solid #ccc;height:100%; position:relative"
>
<span
style=
"display: block; width: 90%; color:#1890ff; font-size: 16px; font-weight: 500; padding-bottom:5px;"
><a-button
style=
"width: 100%"
type=
"default"
@
click=
"addLabel"
>
<a-icon
type=
"plus"
/>
添加标签
</a-button></span>
<a-tree
style=
"height: 700px"
:tree-data=
"treeData"
:replace-fields=
"replaceFields"
:selected-keys=
"selectedKeys"
@
select=
"onSelect"
/>
</a-col>
<a-col
:span=
"19"
:offset=
'1'
>
<RightPanel
v-if=
"currentState == 'create'"
:trigger-type=
'currentState'
@
finish=
'getFinishState'
/>
<RightPanel
v-else-if=
"currentState == 'loadChildLabel'"
:trigger-type=
'currentState'
:label-id=
'labelId'
@
finish=
'getFinishState'
/>
<ParentRightPanel
v-else-if=
"currentState == 'loadParentLabel'"
:trigger-type=
'currentState'
:label-id=
'labelId'
@
finish=
'getFinishState'
/>
<EmptyRightPanel
v-else
/>
</a-col>
</a-row>
</div>
<!--
<div
v-if=
"$route.name=='lvot'"
>
<a-row>
<a-col
:span=
'4'
class=
"layoutMargin layoutPadding"
style=
"height: 680px"
>
<a-row
style=
"height: 36px"
>
<a-button
style=
"width: 100%"
size=
'small'
type=
"default"
@
click=
"addLabel"
>
<a-icon
type=
"plus"
/>
添加标签
</a-button>
</a-row>
<a-tree
:tree-data=
"treeData"
:replace-fields=
"replaceFields"
:selected-keys=
"selectedKeys"
@
select=
"onSelect"
/>
</a-col>
<a-col
:span=
'1'
></a-col>
<a-col
:span=
'18'
class=
"layoutMargin layoutPadding"
style=
"height: 680px"
>
<RightPanel
v-if=
"currentState == 'create'"
:trigger-type=
'currentState'
@
finish=
'getFinishState'
/>
<RightPanel
v-else-if=
"currentState == 'loadChildLabel'"
:trigger-type=
'currentState'
:label-id=
'labelId'
@
finish=
'getFinishState'
/>
<ParentRightPanel
v-else-if=
"currentState == 'loadParentLabel'"
:trigger-type=
'currentState'
:label-id=
'labelId'
@
finish=
'getFinishState'
/>
<EmptyRightPanel
v-else
/>
</a-col>
</a-row>
</div>
-->
<RouterWapper
v-else
/>
</div>
</
template
>
<
script
>
import
RightPanel
from
'@/views/label/labelRightSide.vue'
import
ParentRightPanel
from
'@/views/label/parentLabelRightPanel.vue'
import
EmptyRightPanel
from
'@/views/label/labelRightSideEmpty.vue'
const
treeData
=
[]
export
default
{
name
:
'lvot'
,
components
:
{
RightPanel
,
EmptyRightPanel
,
ParentRightPanel
},
data
()
{
return
{
treeData
,
replaceFields
:
{
children
:
'children'
,
title
:
'labelName'
,
key
:
'id'
},
selectedKeys
:
[],
currentState
:
null
,
labelId
:
null
}
},
mounted
()
{
this
.
getLabelList
()
},
methods
:
{
getFinishState
(
state
)
{
if
(
state
==
true
)
{
this
.
currentState
=
null
this
.
getLabelList
()
}
},
getLabelList
()
{
this
.
$ajax
.
get
({
url
:
this
.
$api
.
GET_LABEL_LIST
,
}).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
treeData
=
this
.
$com
.
confirm
(
res
,
'data.content'
,
[])
console
.
log
(
JSON
.
stringify
(
this
.
treeData
))
}
})
},
backPage
(){
// 返回按钮
this
.
$router
.
back
()
},
onSelect
(
selectedKeys
,
node
)
{
console
.
log
(
selectedKeys
,
node
.
node
.
$children
.
length
)
this
.
$ajax
.
get
({
url
:
this
.
$api
.
GET_LABEL_DETAIL
.
replace
(
'{id}'
,
selectedKeys
[
0
]),
}).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
let
result
=
this
.
$com
.
confirm
(
res
,
'data.content'
,
[])
this
.
labelId
=
selectedKeys
[
0
]
console
.
log
(
result
.
parentId
,
node
.
node
.
$children
.
length
)
if
(
result
.
parentId
!==
'0'
&&
node
.
node
.
$children
.
length
==
0
||
result
.
parentId
==
'0'
&&
node
.
node
.
$children
.
length
==
0
)
{
// 为二级菜单
this
.
currentState
=
'loadChildLabel'
}
else
{
// 为一级菜单
this
.
currentState
=
'loadParentLabel'
}
}
})
},
onCheck
(
checkedKeys
,
info
)
{
console
.
log
(
'onCheck'
,
checkedKeys
,
info
)
},
addLabel
()
{
this
.
currentState
=
'create'
console
.
log
(
'add'
)
}
},
}
</
script
>
<
style
>
.ant-tree
li
{
margin
:
0
;
padding
:
10px
0
;
white-space
:
nowrap
;
list-style
:
none
;
outline
:
0
;
}
.ant-tree-child-tree
>
li
:first-child
{
padding-top
:
20px
;
}
</
style
>
src/views/label/labelRightSide.vue
View file @
14aeb7f4
...
...
@@ -61,9 +61,8 @@
<a-form-item
v-if=
"index66 !== 0"
style=
"margin-bottom: 20px"
>
<a-select
style=
"width: 80px"
placeholder=
'与上组关系'
v-decorator=
"['relationWithGroup-' + index66 + '-0',
{initialValue: item66.relation, validateTrigger:'blur',rules: [{required: true, message: '请至少选择一项!'}]}]">
<a-select-option
value=
'and'
>
与
</a-select-option>
<a-select-option
value=
'and'
>
且
</a-select-option>
<a-select-option
value=
'or'
>
或
</a-select-option>
<a-select-option
value=
'ne'
>
非
</a-select-option>
</a-select>
</a-form-item>
...
...
@@ -81,9 +80,8 @@
<a-form-item
v-if=
"index !== 0"
>
<a-select
style=
"width: 80px"
placeholder=
'请选择条件'
v-decorator=
"['relation-' + index66 +'-' + index,
{initialValue: item.relation, validateTrigger:'blur',rules: [{required: true, message: '请至少选择一项!'}]}]">
<a-select-option
value=
'and'
>
与
</a-select-option>
<a-select-option
value=
'and'
>
且
</a-select-option>
<a-select-option
value=
'or'
>
或
</a-select-option>
<a-select-option
value=
'ne'
>
非
</a-select-option>
</a-select>
</a-form-item>
...
...
@@ -104,8 +102,8 @@
<a-form-item>
<a-select
style=
"width: 150px"
placeholder=
'区间'
v-decorator=
"['codition-' + index66 +'-' + index,
{initialValue: item.codition, validateTrigger:'blur',rules: [{required: true, message: '请至少选择一项!'}]}]">
<a-select-option
value=
'eq'
>
等于
(精确)
</a-select-option>
<a-select-option
value=
'regex'
>
等于(模糊)
</a-select-option>
<a-select-option
value=
'eq'
>
等于
</a-select-option>
<a-select-option
value=
'regex'
>
包含
</a-select-option>
<a-select-option
value=
'ne'
>
不等于
</a-select-option>
<a-select-option
value=
'gt'
>
大于
</a-select-option>
<a-select-option
value=
'gte'
>
大于等于
</a-select-option>
...
...
@@ -493,6 +491,7 @@ export default {
val
:
!
formData
[
'inputTwo-'
+
i
+
'-'
+
index
]
?
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
:
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
+
','
+
formData
[
'inputTwo-'
+
i
+
'-'
+
index
],
codition
:
formData
[
'codition-'
+
i
+
'-'
+
index
],
relation
:
!!
formData
[
'relation-'
+
i
+
'-'
+
index
]?
formData
[
'relation-'
+
i
+
'-'
+
index
]:
'and'
,
randomNum
:
formData
[
'randomNumInner-'
+
i
+
'-'
+
index
],
})
})
...
...
@@ -532,7 +531,7 @@ export default {
console
.
log
(
this
.
loopContent
)
Vue
.
set
(
this
.
loopContent
,
'data'
,
[
...
this
.
loopContent
.
data
,
{
randomNum
:
Math
.
random
().
toString
(),
serial
:
'新分组'
,
relation
:
'and'
,
labelSelConditionList
:
[
{
key
:
''
,
val
:
''
,
tableName
:
''
,
codition
:
'eq'
,
relation
:
''
}
]
}
...
this
.
loopContent
.
data
,
{
randomNum
:
Math
.
random
().
toString
(),
serial
:
'新分组'
,
relation
:
'and'
,
labelSelConditionList
:
[
{
key
:
''
,
val
:
''
,
tableName
:
''
,
codition
:
'eq'
,
relation
:
''
,
randomNum
:
Math
.
random
()
}
]
}
])
this
.
$forceUpdate
()
...
...
@@ -556,6 +555,7 @@ export default {
val
:
!
formData
[
'inputTwo-'
+
i
+
'-'
+
index
]
?
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
:
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
+
','
+
formData
[
'inputTwo-'
+
i
+
'-'
+
index
],
codition
:
formData
[
'codition-'
+
i
+
'-'
+
index
],
relation
:
!!
formData
[
'relation-'
+
i
+
'-'
+
index
]?
formData
[
'relation-'
+
i
+
'-'
+
index
]:
'and'
,
randomNum
:
formData
[
'randomNumInner-'
+
i
+
'-'
+
index
],
})
})
...
...
@@ -684,8 +684,7 @@ export default {
this
.
deleteVisible
=
!
this
.
deleteVisible
},
resetFormFields
()
{
this
.
loopContent
.
data
=
[
{
randomNum
:
Math
.
random
(),
serial
:
'新分组'
,
relation
:
'and'
,
labelSelConditionList
:
[
{
key
:
''
,
val
:
''
,
tableName
:
''
,
codition
:
'eq'
,
relation
:
''
}
]
}
]
this
.
loopContent
.
data
=
[
{
randomNum
:
Math
.
random
(),
serial
:
'新分组'
,
relation
:
'and'
,
labelSelConditionList
:
[
{
key
:
''
,
val
:
''
,
tableName
:
''
,
codition
:
'eq'
,
relation
:
''
,
randomNum
:
Math
.
random
()}
]
}
]
this
.
resultList
=
[]
this
.
labelForm
.
resetFields
()
this
.
infoSettingForm
.
resetFields
()
...
...
@@ -744,6 +743,7 @@ export default {
val
:
!
formData
[
'inputTwo-'
+
i
+
'-'
+
index
]
?
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
:
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
+
','
+
formData
[
'inputTwo-'
+
i
+
'-'
+
index
],
codition
:
formData
[
'codition-'
+
i
+
'-'
+
index
],
relation
:
!!
formData
[
'relation-'
+
i
+
'-'
+
index
]?
formData
[
'relation-'
+
i
+
'-'
+
index
]:
'and'
,
randomNum
:
formData
[
'randomNumInner-'
+
i
+
'-'
+
index
],
})
})
innerResult
.
push
({
...
...
@@ -813,6 +813,7 @@ export default {
val
:
!
formData
[
'inputTwo-'
+
i
+
'-'
+
index
]
?
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
:
formData
[
'inputOne-'
+
i
+
'-'
+
index
]
+
','
+
formData
[
'inputTwo-'
+
i
+
'-'
+
index
],
codition
:
formData
[
'codition-'
+
i
+
'-'
+
index
],
relation
:
!!
formData
[
'relation-'
+
i
+
'-'
+
index
]?
formData
[
'relation-'
+
i
+
'-'
+
index
]:
'and'
,
randomNum
:
formData
[
'randomNumInner-'
+
i
+
'-'
+
index
],
})
})
...
...
src/views/label/labelRightSideEmpty.vue
0 → 100644
View file @
14aeb7f4
<
template
>
<div
style=
"position: relative"
>
<div
style=
"border: 1px dotted lightgrey; padding: 150px;"
>
<a-row
style=
"text-align: center; margin-bottom: 50px;"
>
<img
src=
"@/assets/icon/labelNone.png"
/>
</a-row>
<a-row
style=
"text-align: center; font-weight: bold; font-size: 16px"
>
<span>
请先在左侧选择一个标签或添加标签。
</span>
</a-row>
</div>
</div>
</
template
>
<
script
>
export
default
{
}
</
script
>
\ No newline at end of file
src/views/label/parentLabelRightPanel.vue
0 → 100644
View file @
14aeb7f4
<
template
>
<div
class=
"routerWapper"
>
<!--
{{
labelId
}}
-->
<div>
<a-row>
<a-col
:span=
'1'
>
<div
class=
"detailOperations"
>
<a-button
@
click=
"backPage"
>
返回
</a-button>
</div>
</a-col>
<a-col
:span=
'1'
:offset=
'1'
>
<a-button
type=
'primary'
@
click=
"save()"
>
保存
</a-button>
</a-col>
<a-col
:span=
'19'
></a-col>
</a-row>
</div>
<div>
<a-divider
type=
'horizontal'
/>
<a-form
:form=
'labelForm'
>
<a-form-item
label=
'标签名'
:label-col=
"
{span:2}" :wrapper-col="{span:14}">
<a-input
v-decorator=
"['labelName',
{validateTrigger:'blur', initialValue: '', rules: [{required: true, message: '请填写标签名!'}]}]">
</a-input>
</a-form-item>
</a-form>
</div>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
labelForm
:
this
.
$form
.
createForm
(
this
),
labelList
:
{},
finish
:
false
,
}
},
props
:
[
'triggerType'
,
'labelId'
],
mounted
()
{
this
.
getLabelInfo
()
},
watch
:
{
triggerType
:
{
handler
:
function
(
newV
,
oldV
)
{
this
.
resetFormFields
()
this
.
getLabelInfo
()
},
immediate
:
true
},
labelId
:
{
handler
:
function
(
newV
,
oldV
)
{
this
.
resetFormFields
()
this
.
getLabelInfo
()
},
immediate
:
true
}
},
methods
:
{
getLabelInfo
()
{
if
(
!!
this
.
labelId
)
{
this
.
$ajax
.
get
({
url
:
this
.
$api
.
GET_LABEL_DETAIL
.
replace
(
'{id}'
,
this
.
labelId
),
}).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
labelList
=
res
.
data
.
content
this
.
labelForm
.
setFieldsValue
({
labelName
:
res
.
data
.
content
.
labelName
})
}
})
}
},
resetFormFields
()
{
this
.
labelForm
.
resetFields
()
},
backPage
(){
// 返回按钮
this
.
finish
=
true
this
.
$emit
(
'finish'
,
this
.
finish
)
},
save
()
{
this
.
labelForm
.
validateFields
((
err1
,
values
)
=>
{
if
(
!
err1
)
{
this
.
labelList
.
labelName
=
this
.
labelForm
.
getFieldValue
(
'labelName'
)
this
.
$ajax
.
put
({
url
:
this
.
$api
.
PUT_LABEL_INFO
.
replace
(
'{id}'
,
this
.
labelId
),
params
:
Object
.
assign
(
this
.
labelList
,
{
id
:
this
.
labelId
})
}).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
$message
.
success
(
'修改成功!'
)
this
.
resetFormFields
()
this
.
finish
=
true
this
.
$emit
(
'finish'
,
this
.
finish
)
}
else
{
this
.
$message
.
success
(
'修改失败!'
)
}
})
}
})
},
},
}
</
script
>
\ No newline at end of file
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