Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
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
罗超
SuperMan
Commits
d00ef0ec
Commit
d00ef0ec
authored
Jun 03, 2019
by
Mac
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/superman
parents
0b160286
b3a5072c
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
3092 additions
and
379 deletions
+3092
-379
supplierBg.png
src/assets/img/supplierBg.png
+0
-0
HotelInfo.vue
src/components/Supplier/HotelInfo.vue
+894
-0
HotelManagement.vue
src/components/Supplier/HotelManagement.vue
+4
-4
HotelProductCalendar.vue
src/components/Supplier/HotelProductCalendar.vue
+326
-0
HotelProductManage.vue
src/components/Supplier/HotelProductManage.vue
+1652
-0
HotelQueryList.vue
src/components/Supplier/HotelQueryList.vue
+6
-6
HotelSalesBoard.vue
src/components/Supplier/HotelSalesBoard.vue
+7
-7
HotelTotalStock.vue
src/components/Supplier/HotelTotalStock.vue
+5
-5
SupplierIndex.vue
src/components/SupplierIndex.vue
+1
-0
SupplierLogin.vue
src/components/SupplierLogin.vue
+56
-227
dmcTotalTable.vue
src/components/dmc/manager/dmcTotalTable.vue
+46
-58
index.js
src/plug/index.js
+26
-31
config.js
src/router/config.js
+69
-41
No files found.
src/assets/img/supplierBg.png
0 → 100644
View file @
d00ef0ec
This diff is collapsed.
Click to expand it.
src/components/Supplier/HotelInfo.vue
0 → 100644
View file @
d00ef0ec
This diff is collapsed.
Click to expand it.
src/components/Supplier/HotelManagement.vue
View file @
d00ef0ec
...
@@ -276,7 +276,7 @@
...
@@ -276,7 +276,7 @@
</li>
</li>
<li>
<li>
<button
class=
"hollowFixedBtn"
type=
"button"
@
click=
"resetPageIndex(),selectResource()"
>
{{
$t
(
'pub.searchBtn'
)
}}
</button>
<button
class=
"hollowFixedBtn"
type=
"button"
@
click=
"resetPageIndex(),selectResource()"
>
{{
$t
(
'pub.searchBtn'
)
}}
</button>
<button
class=
"normalBtn"
type=
"button"
@
click=
"goSubInfo('HotelInfo')"
>
{{
$t
(
'pub.addBtn'
)
}}
</button>
<button
class=
"normalBtn"
type=
"button"
@
click=
"goSubInfo('HotelInfo
2
')"
>
{{
$t
(
'pub.addBtn'
)
}}
</button>
</li>
</li>
</ul>
</ul>
</div>
</div>
...
@@ -325,8 +325,8 @@
...
@@ -325,8 +325,8 @@
</div>
</div>
</div>
</div>
<div
class=
"btnList"
>
<div
class=
"btnList"
>
<button
@
click=
"goSubInfo('HotelInfo',item.ID)"
class=
"hotelBtn"
>
{{
$t
(
'pub.updateMsg'
)
}}
</button>
<button
@
click=
"goSubInfo('HotelInfo
2
',item.ID)"
class=
"hotelBtn"
>
{{
$t
(
'pub.updateMsg'
)
}}
</button>
<button
@
click=
"goUrl('HotelProductManage
2
',item)"
class=
"hotelBtn"
>
报价与库存
</button>
<button
@
click=
"goUrl('HotelProductManage
3
',item)"
class=
"hotelBtn"
>
报价与库存
</button>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -451,7 +451,7 @@
...
@@ -451,7 +451,7 @@
this
.
msg
.
Status
=
"-1"
;
this
.
msg
.
Status
=
"-1"
;
}
}
this
.
ApiPost2
(
this
.
ApiPost2
(
"hotel_post_GetPageList"
,
"hotel_post_GetPageList
_Supplier
"
,
this
.
msg
,
this
.
msg
,
res
=>
{
res
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
...
...
src/components/Supplier/HotelProductCalendar.vue
0 → 100644
View file @
d00ef0ec
<
template
>
<div
class=
"hotelProductCalendar"
>
<div
class=
"hotelProductCalendar_month"
>
<div
onselectstart=
"return false;"
>
<span>
{{
calendar
.
data
.
date
&&
calendar
.
data
.
date
.
split
(
'-'
)[
0
]
}}
年
</span>
<span>
{{
calendar
.
data
.
date
&&
calendar
.
data
.
date
.
split
(
'-'
)[
1
]
}}
月
</span>
</div>
<div>
<span>
酒店库存表
</span>
</div>
<div>
<i
class=
"iconfont icon-cha"
@
click=
"calendarHide()"
></i>
</div>
</div>
<div
class=
"hotelProductCalendar_week"
>
<div>
{{
$t
(
'hotel.hotel_Monday'
)
}}
</div>
<div>
{{
$t
(
'hotel.hotel_Tuesday'
)
}}
</div>
<div>
{{
$t
(
'hotel.hotel_Wednesday'
)
}}
</div>
<div>
{{
$t
(
'hotel.hotel_Thursday'
)
}}
</div>
<div>
{{
$t
(
'hotel.hotel_Friday'
)
}}
</div>
<div>
{{
$t
(
'hotel.hotel_Saturday'
)
}}
</div>
<div>
{{
$t
(
'hotel.hotel_Sunday'
)
}}
</div>
</div>
<div
class=
"hotelProductCalendar_day"
>
<div
v-for=
"(item, index) in calendar.data.days"
:key=
"index"
>
<div
:class=
"item.month===calendar.data.date?'nowMonth':'otherMonth'"
>
<span>
{{
item
.
date
.
getMonth
()
+
1
}}
-
{{
item
.
date
.
getDate
()
}}
</span>
</div>
<div
v-if=
"item.data&&item.month===calendar.data.date"
:class=
"stockColor(item.data.SubList[0].InventoryType)"
>
<template
v-for=
"(childItem,childIndex) in item.data.SubList"
>
<p>
<span
title=
"点击修改价格和库存信息"
>
价格:
<span
@
click=
"goUrlA('2', item,childItem.BatchNumber)"
class=
"text_underLine"
>
{{
childItem
.
CostPrice
}}
(
{{
childItem
.
CurrencyName
}}
)
</span>
</span><br/>
<span
title=
"点击跳转到总库存看板"
>
总库存:
<span
class=
"text_underLine"
@
click=
"goUrlB(item)"
>
{{
childItem
.
Inventory
}}
(间)
</span>
</span><br/>
<span
title=
"点击跳转到酒店查询"
>
剩余库存:
<span
class=
"text_underLine"
@
click=
"goUrlHotelTeam(item)"
>
{{
childItem
.
RemainingInventory
}}
(间)
</span>
</span>
</p>
</
template
>
</div>
<div
class=
"noStock"
v-if=
"!item.data&&item.month===calendar.data.date"
>
<p><span>
暂无数据
</span></p>
<p><span
@
click=
"goUrlA('1', item,1)"
>
立即新增
</span></p>
</div>
<div
class=
"hasStock"
v-if=
"item.month!==calendar.data.date"
>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
</div>
</div>
</div>
</div>
</template>
<
script
>
export
default
{
props
:
{
'calendar'
:
{
type
:
Object
,
default
:
function
()
{
return
{
show
:
false
,
data
:
{}
}
}
}
},
methods
:
{
stockColor
:
function
(
type
)
{
if
(
type
===
1
)
{
return
'hasStock hasStock_1'
}
else
if
(
type
===
2
)
{
return
'hasStock hasStock_2'
}
else
if
(
type
===
3
)
{
return
'hasStock hasStock_3'
}
else
if
(
type
===
4
)
{
return
'hasStock hasStock_4'
}
else
if
(
type
===
5
)
{
return
'hasStock hasStock_5'
}
},
calendarHide
:
function
()
{
this
.
calendar
.
show
=
false
this
.
calendar
.
data
=
{}
},
goUrlA
:
function
(
type
,
item
,
BatchNumber
)
{
this
.
$emit
(
'goEdit'
,
type
,
item
.
day
,
BatchNumber
)
},
goUrlHotelTeam
:
function
(
item
)
{
this
.
$router
.
push
({
name
:
'HotelsTeam'
,
query
:
{
HotelId
:
item
.
data
.
HotelId
,
StartDate
:
item
.
data
.
DayStr
,
blank
:
'y'
,
tab
:
'酒店相关团'
}
});
},
goUrlB
:
function
(
item
)
{
this
.
$router
.
push
({
name
:
'HotelTotalStock'
,
query
:
{
HotelId
:
this
.
hotelId
,
blank
:
'y'
,
tab
:
'总库存看板'
}
});
}
}
}
</
script
>
<
style
scoped
>
.hotelProductCalendar
{
width
:
100%
;
font-size
:
0px
;
box-sizing
:
border-box
;
background-color
:
#f5f5f5
;
}
.hotelProductCalendar_month
{
position
:
relative
;
width
:
100%
;
height
:
50px
;
line-height
:
50px
;
text-align
:
center
;
background
:
#e95252
;
border-radius
:
4px
4px
0
0
;
}
.hotelProductCalendar_month
>
div
{
display
:
inline-block
;
height
:
50px
;
line-height
:
50px
;
vertical-align
:
top
;
}
.hotelProductCalendar_month
>
div
:nth-child
(
1
)>
i
{
display
:
inline-block
;
font-size
:
22px
;
color
:
#ff7e7e
;
cursor
:
pointer
;
vertical-align
:
middle
;
}
.hotelProductCalendar_month
>
div
:nth-child
(
1
)>
input
{
display
:
inline-block
;
width
:
60px
;
height
:
30px
;
border-radius
:
17px
;
outline
:
none
;
border
:
none
;
color
:
#fff
;
background
:
transparent
;
font-size
:
18px
;
text-align
:
center
;
vertical-align
:
middle
;
}
.hotelProductCalendar_month
>
div
:nth-child
(
1
)>
span
{
display
:
inline-block
;
padding
:
0
5px
;
font-size
:
18px
;
color
:
#fff
;
vertical-align
:
middle
;
}
.hotelProductCalendar_month
>
div
:nth-child
(
2
)>
span
{
display
:
inline-block
;
padding
:
0
20px
;
font-size
:
18px
;
color
:
#fff
;
}
.hotelProductCalendar_month
>
div
:nth-child
(
3
)
{
position
:
absolute
;
z-index
:
1
;
right
:
0px
;
top
:
0px
;
width
:
50px
;
text-align
:
center
;
}
.hotelProductCalendar_month
>
div
:nth-child
(
3
)>
i
{
font-size
:
12px
;
color
:
#ffffff
;
cursor
:
pointer
;
}
.hotelProductCalendar_week
{
width
:
100%
;
height
:
28px
;
background-color
:
#3fa783
;
}
.hotelProductCalendar_week
>
div
{
display
:
inline-block
;
width
:
14.2857%
;
height
:
28px
;
line-height
:
28px
;
text-align
:
center
;
font-size
:
14px
;
color
:
#FFFFFF
;
}
.hotelProductCalendar_day
{
width
:
100%
;
border-left
:
1px
solid
#dddddd
;
}
.hotelProductCalendar_day
>
div
{
display
:
inline-block
;
width
:
14.2857%
;
height
:
148px
;
border-right
:
1px
solid
#ddd
;
border-bottom
:
1px
solid
#ddd
;
vertical-align
:
top
;
}
.hotelProductCalendar_day
>
div
>
div
:nth-child
(
1
)
{
width
:
100%
;
height
:
28px
;
line-height
:
28px
;
text-align
:
center
;
}
.hotelProductCalendar_day
>
div
>
div
:nth-child
(
1
)>
span
{
font-size
:
14px
;
}
.hotelProductCalendar_day
>
div
>
.nowMonth
{
background-color
:
#CCCCCC
;
}
.hotelProductCalendar_day
>
div
>
.nowMonth
>
span
{
color
:
#000000
;
}
.hotelProductCalendar_day
>
div
:nth-child
(
7n-1
)>
.nowMonth
>
span
{
color
:
#e95252
;
}
.hotelProductCalendar_day
>
div
:nth-child
(
7n
)>
.nowMonth
>
span
{
color
:
#e95252
;
}
.hotelProductCalendar_day
>
div
>
.otherMonth
{
background-color
:
#DDDDDD
;
}
.hotelProductCalendar_day
>
div
>
.otherMonth
>
span
{
color
:
#999999
;
}
.hotelProductCalendar_day
>
div
>
.hasStock
{
width
:
100%
;
height
:
120px
;
overflow-y
:
auto
;
}
.hotelProductCalendar_day
>
div
>
.hasStock
>
p
{
width
:
100%
;
min-height
:
20px
;
padding
:
0
10px
;
line-height
:
19px
;
font-size
:
12px
;
border-bottom
:
1px
dashed
#ccc
;
}
.hotelProductCalendar_day
>
div
>
.hasStock_1
{
color
:
#FFFFFF
;
background-color
:
#ff3737
;
}
.hotelProductCalendar_day
>
div
>
.hasStock_2
{
background-color
:
#ff99cc
;
}
.hotelProductCalendar_day
>
div
>
.hasStock_3
{
background-color
:
#bcd6ee
;
}
.hotelProductCalendar_day
>
div
>
.hasStock_4
{
background-color
:
#ffffff
;
}
.hotelProductCalendar_day
>
div
>
.hasStock_5
{
background-color
:
#02F78E
;
}
.hotelProductCalendar_day
>
div
>
.noStock
{
padding
:
30px
0
0
0
;
width
:
100%
;
height
:
120px
;
}
.hotelProductCalendar_day
>
div
>
.noStock
>
p
:nth-child
(
1
)
{
width
:
100%
;
font-size
:
16px
;
color
:
#999999
;
text-align
:
center
;
}
.hotelProductCalendar_day
>
div
>
.noStock
>
p
:nth-child
(
2
)
{
margin
:
10px
0
0
0
;
width
:
100%
;
font-size
:
12px
;
color
:
#00C6FF
;
text-align
:
center
;
cursor
:
pointer
;
}
.text_underLine
{
cursor
:
pointer
;
text-decoration
:
underline
}
</
style
>
src/components/Supplier/HotelProductManage.vue
0 → 100644
View file @
d00ef0ec
This diff is collapsed.
Click to expand it.
src/components/Supplier/HotelQueryList.vue
View file @
d00ef0ec
...
@@ -89,7 +89,7 @@
...
@@ -89,7 +89,7 @@
<el-table
v-if=
"dataList.length>0"
:data=
"dataList"
style=
"width:100%"
border
v-loading=
'loading'
height=
"500"
>
<el-table
v-if=
"dataList.length>0"
:data=
"dataList"
style=
"width:100%"
border
v-loading=
'loading'
height=
"500"
>
<el-table-column
fixed
label=
"酒店名称"
min-width=
"180"
>
<el-table-column
fixed
label=
"酒店名称"
min-width=
"180"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<div
style=
"text-decoration: underline;cursor:pointer"
@
click=
"GotoHotel(scope.row.HotelId)"
>
<div
style=
"text-decoration: underline;cursor:pointer"
>
{{
scope
.
row
.
HotelName
}}
</div>
{{
scope
.
row
.
HotelName
}}
</div>
<div>
{{
scope
.
row
.
TotalInventory
}}
</div>
<div>
{{
scope
.
row
.
TotalInventory
}}
</div>
</
template
>
</
template
>
...
@@ -116,7 +116,7 @@
...
@@ -116,7 +116,7 @@
</
template
>
</
template
>
</div>
</div>
<div
class=
"Hotel_kong Com_hoteldiv Hq_duoge"
<div
class=
"Hotel_kong Com_hoteldiv Hq_duoge"
@
click=
"GotoUrl(scope.row,index,scope.row.subList[index].UseInventory)"
>
>
{{scope.row.subList[index].Inventory}}/{{scope.row.subList[index].UseInventory}}/{{scope.row.subList[index].RemainingInventory}}
{{scope.row.subList[index].Inventory}}/{{scope.row.subList[index].UseInventory}}/{{scope.row.subList[index].RemainingInventory}}
</div>
</div>
<div
class=
"Hotel_kong Com_hoteldiv"
>
<div
class=
"Hotel_kong Com_hoteldiv"
>
...
@@ -357,7 +357,7 @@
...
@@ -357,7 +357,7 @@
if
(
this
.
msg
.
EndDate
==
null
)
{
if
(
this
.
msg
.
EndDate
==
null
)
{
this
.
msg
.
EndDate
=
this
.
setEdate
();
this
.
msg
.
EndDate
=
this
.
setEdate
();
}
}
this
.
ApiPost2
(
"dict_post_HotelOffer_GetHotelStatics"
,
this
.
msg
,
this
.
ApiPost2
(
"dict_post_HotelOffer_GetHotelStatics
_Supplier
"
,
this
.
msg
,
res
=>
{
res
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
res
.
data
.
resultCode
==
1
)
{
...
@@ -373,7 +373,7 @@
...
@@ -373,7 +373,7 @@
//获取酒店列表
//获取酒店列表
GetHotelList
()
{
GetHotelList
()
{
this
.
ApiPost2
(
this
.
ApiPost2
(
"hotel_post_GetHasStockHotelList"
,
{
"hotel_post_GetHasStockHotelList
_Supplier
"
,
{
Country
:
651
,
Country
:
651
,
IsMoreThanZero
:
1
IsMoreThanZero
:
1
},
},
...
@@ -549,10 +549,10 @@
...
@@ -549,10 +549,10 @@
this
.
loading
=
true
;
this
.
loading
=
true
;
let
qMsg
=
{
let
qMsg
=
{
queryMsg
:
this
.
msg
,
queryMsg
:
this
.
msg
,
uid
:
this
.
getLocalStorage
().
Employee
Id
uid
:
this
.
getLocalStorage
Supplier
().
SupplierAccount
Id
};
};
let
fileName
=
"酒店查询统计"
+
this
.
$commonUtils
.
getCurrentDate
()
+
".xls"
;
let
fileName
=
"酒店查询统计"
+
this
.
$commonUtils
.
getCurrentDate
()
+
".xls"
;
this
.
GetLocalFile
(
"hotel_get_downloadHotelQuery"
,
qMsg
,
fileName
,
this
.
GetLocalFile
(
"hotel_get_downloadHotelQuery
_Supplier
"
,
qMsg
,
fileName
,
res
=>
{
res
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
});
});
...
...
src/components/Supplier/HotelSalesBoard.vue
View file @
d00ef0ec
...
@@ -246,7 +246,7 @@
...
@@ -246,7 +246,7 @@
</el-select>
</el-select>
</span>
</span>
</li>
</li>
<li>
<li
style=
"display:none;"
>
<span>
<span>
<em>
供应商
</em>
<em>
供应商
</em>
<el-select
v-model=
"msg.Supplier"
placeholder=
"请选择"
>
<el-select
v-model=
"msg.Supplier"
placeholder=
"请选择"
>
...
@@ -455,7 +455,7 @@
...
@@ -455,7 +455,7 @@
this
.
msg
.
Month
=
this
.
currentMonth
;
this
.
msg
.
Month
=
this
.
currentMonth
;
this
.
DayData
=
[];
this
.
DayData
=
[];
this
.
ApiPost2
(
this
.
ApiPost2
(
"hotelreport_get_GetHotelPriceMonthStatisticsExt"
,
"hotelreport_get_GetHotelPriceMonthStatisticsExt
_Supplier
"
,
this
.
msg
,
this
.
msg
,
res
=>
{
res
=>
{
this
.
msg
.
loading
=
false
;
this
.
msg
.
loading
=
false
;
...
@@ -489,7 +489,7 @@
...
@@ -489,7 +489,7 @@
//获取酒店列表
//获取酒店列表
GetHotelList
()
{
GetHotelList
()
{
this
.
ApiPost2
(
this
.
ApiPost2
(
"hotel_post_GetHasStockHotelList"
,
{
"hotel_post_GetHasStockHotelList
_Supplier
"
,
{
Country
:
651
,
Country
:
651
,
IsMoreThanZero
:
1
IsMoreThanZero
:
1
},
},
...
@@ -534,10 +534,10 @@
...
@@ -534,10 +534,10 @@
this
.
msg
.
loading
=
true
;
this
.
msg
.
loading
=
true
;
let
qMsg
=
{
let
qMsg
=
{
queryMsg
:
this
.
msg
,
queryMsg
:
this
.
msg
,
uid
:
this
.
getLocalStorage
().
Employee
Id
uid
:
this
.
getLocalStorage
Supplier
().
SupplierAccount
Id
};
};
let
fileName
=
"酒店统计"
+
this
.
$commonUtils
.
getCurrentDate
()
+
".xls"
;
let
fileName
=
"酒店统计"
+
this
.
$commonUtils
.
getCurrentDate
()
+
".xls"
;
this
.
GetLocalFile
(
"hotel_get_downloadHotelSalesBoard"
,
qMsg
,
fileName
,
this
.
GetLocalFile
(
"hotel_get_downloadHotelSalesBoard
_Supplier
"
,
qMsg
,
fileName
,
res
=>
{
res
=>
{
this
.
msg
.
loading
=
false
;
this
.
msg
.
loading
=
false
;
});
});
...
@@ -567,7 +567,7 @@
...
@@ -567,7 +567,7 @@
this
.
currentMonth
=
myDate
.
getMonth
()
+
1
;
this
.
currentMonth
=
myDate
.
getMonth
()
+
1
;
this
.
msg
.
Year
=
this
.
currentYear
;
this
.
msg
.
Year
=
this
.
currentYear
;
this
.
msg
.
Month
=
this
.
currentDay
;
this
.
msg
.
Month
=
this
.
currentDay
;
this
.
initSupplier
();
//
this.initSupplier();
this
.
getBranchList
();
this
.
getBranchList
();
this
.
GetHotelList
();
this
.
GetHotelList
();
this
.
initCalendar
();
this
.
initCalendar
();
...
...
src/components/Supplier/HotelTotalStock.vue
View file @
d00ef0ec
...
@@ -356,7 +356,7 @@
...
@@ -356,7 +356,7 @@
</el-select>
</el-select>
</span>
</span>
</li>
</li>
<li>
<li
style=
"display:none;"
>
<span>
<span>
<em>
供应商
</em>
<em>
供应商
</em>
<el-select
v-model=
"msg.Supplier"
placeholder=
"请选择"
>
<el-select
v-model=
"msg.Supplier"
placeholder=
"请选择"
>
...
@@ -389,7 +389,7 @@
...
@@ -389,7 +389,7 @@
</div>
</div>
<ul
class=
'clearfix'
v-loading=
"loading"
>
<ul
class=
'clearfix'
v-loading=
"loading"
>
<li
v-for=
"(item,index) in DataList"
>
<li
v-for=
"(item,index) in DataList"
>
<div
class=
"hotelTS_item"
@
click=
"goUrlHotel('HotelSalesBoard',item.ID)"
>
<div
class=
"hotelTS_item"
@
click=
"goUrlHotel('HotelSalesBoard
2
',item.ID)"
>
<img
v-if=
"!item.PicPath"
src=
"../../assets/img/bg_c3@3x.png"
>
<img
v-if=
"!item.PicPath"
src=
"../../assets/img/bg_c3@3x.png"
>
<img
v-else
:src=
"item.PicPath"
:onerror=
'defaultImg'
>
<img
v-else
:src=
"item.PicPath"
:onerror=
'defaultImg'
>
<el-tooltip
effect=
"dark"
:content=
"item.Name"
placement=
"top-start"
>
<el-tooltip
effect=
"dark"
:content=
"item.Name"
placement=
"top-start"
>
...
@@ -470,7 +470,7 @@
...
@@ -470,7 +470,7 @@
if
(
this
.
msg
.
eDate
==
null
)
{
if
(
this
.
msg
.
eDate
==
null
)
{
this
.
msg
.
eDate
=
this
.
setEdate
()
this
.
msg
.
eDate
=
this
.
setEdate
()
}
}
this
.
ApiPost2
(
'hotel_post_GetStockPageList'
,
this
.
msg
,
res
=>
{
this
.
ApiPost2
(
'hotel_post_GetStockPageList
_Supplier
'
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
msg
.
total
=
res
.
data
.
data
.
count
;
this
.
msg
.
total
=
res
.
data
.
data
.
count
;
...
@@ -493,7 +493,7 @@
...
@@ -493,7 +493,7 @@
//获取酒店列表
//获取酒店列表
GetHotelList
()
{
GetHotelList
()
{
this
.
ApiPost2
(
this
.
ApiPost2
(
"hotel_post_GetHasStockHotelList"
,
{
"hotel_post_GetHasStockHotelList
_Supplier
"
,
{
Country
:
651
,
Country
:
651
,
IsMoreThanZero
:
1
IsMoreThanZero
:
1
},
},
...
@@ -554,7 +554,7 @@
...
@@ -554,7 +554,7 @@
mounted
()
{
mounted
()
{
this
.
msg
.
HotelId
=
this
.
$route
.
query
.
HotelId
===
undefined
?
0
:
this
.
$route
.
query
.
HotelId
;
this
.
msg
.
HotelId
=
this
.
$route
.
query
.
HotelId
===
undefined
?
0
:
this
.
$route
.
query
.
HotelId
;
this
.
initSupplier
();
//
this.initSupplier();
this
.
GetHotelList
();
this
.
GetHotelList
();
this
.
getProvinceList
(
651
,
1
);
this
.
getProvinceList
(
651
,
1
);
this
.
getList
();
this
.
getList
();
...
...
src/components/SupplierIndex.vue
View file @
d00ef0ec
...
@@ -87,6 +87,7 @@
...
@@ -87,6 +87,7 @@
},
},
created
()
{
created
()
{
this
.
userInfo
=
this
.
getLocalStorageSupplier
();
this
.
userInfo
=
this
.
getLocalStorageSupplier
();
console
.
log
(
"userInfo"
,
this
.
userInfo
);
let
language
=
localStorage
.
language
;
let
language
=
localStorage
.
language
;
if
(
!
language
)
{
if
(
!
language
)
{
this
.
language
=
'zh-CN'
;
this
.
language
=
'zh-CN'
;
...
...
src/components/SupplierLogin.vue
View file @
d00ef0ec
This diff is collapsed.
Click to expand it.
src/components/dmc/manager/dmcTotalTable.vue
View file @
d00ef0ec
...
@@ -263,7 +263,8 @@
...
@@ -263,7 +263,8 @@
<span
style=
"color: #4BCA81;"
v-if=
"item.ResultReport.HotelResult==1"
>
√
</span>
<span
style=
"color: #4BCA81;"
v-if=
"item.ResultReport.HotelResult==1"
>
√
</span>
<span
class=
"colorE95252"
v-else
>
{{
item
.
ResultReport
.
HotelResult
==
'-1'
?
"x"
:
"O"
}}
</span>
<span
class=
"colorE95252"
v-else
>
{{
item
.
ResultReport
.
HotelResult
==
'-1'
?
"x"
:
"O"
}}
</span>
</div>
</div>
<p
v-if=
"item.LineId==14 && item.CommonReport.PriceHotelResult && item.CommonReport.PriceHotelResult.length>0"
>
<p
v-if=
"item.LineId==14 && item.CommonReport.PriceHotelResult && item.CommonReport.PriceHotelResult.length>0"
>
<el-popover
width=
"600"
trigger=
"click"
popper-class=
"TC_HotelPop"
>
<el-popover
width=
"600"
trigger=
"click"
popper-class=
"TC_HotelPop"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
class=
"singeRowTable"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
class=
"singeRowTable"
>
<tr>
<tr>
...
@@ -295,11 +296,13 @@
...
@@ -295,11 +296,13 @@
</a>
</a>
<a
v-if=
"(hotelSubItem.OPState==1||(hotelSubItem.OPState==2 && hotelSubItem.DMCState==0))&& hotelSubItem.UseCount>0 "
<a
v-if=
"(hotelSubItem.OPState==1||(hotelSubItem.OPState==2 && hotelSubItem.DMCState==0))&& hotelSubItem.UseCount>0 "
style=
"color:green"
>
style=
"color:green"
>
【使用: {{hotelSubItem.UseCount}} 间 {{hotelSubItem.CostPrice!=0?"价格:"+hotelSubItem.CostPrice:""}} 】
【使用: {{hotelSubItem.UseCount}} 间
{{hotelSubItem.CostPrice!=0?"价格:"+hotelSubItem.CostPrice:""}} 】
</a>
</a>
</td>
</td>
<td>
<td>
<
template
v-if=
"hotelSubItem.OPState==1||(hotelSubItem.OPState==2 && hotelSubItem.DMCState==0)"
>
<
template
v-if=
"hotelSubItem.OPState==1||(hotelSubItem.OPState==2 && hotelSubItem.DMCState==0)"
>
{{
hotelSubItem
.
CreateDateStr
}}
</
template
>
{{
hotelSubItem
.
CreateDateStr
}}
</
template
>
</td>
</td>
</tr>
</tr>
...
@@ -336,37 +339,50 @@
...
@@ -336,37 +339,50 @@
<td>
<td>
<div
class=
"w250"
>
<div
class=
"w250"
>
<el-button-group>
<el-button-group>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"收付款"
placement=
"top-start"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"地接信息"
placement=
"top-start"
>
<el-button
icon=
"iconfont icon-shoufukuan"
@
click=
"goUrlT('teamRevenueExpenditure',item.TCID,'团队收支')"
type=
"primary"
style=
"background:#00C6FF; border-color:#00C6FF"
></el-button>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"添加备注"
placement=
"top-start"
>
<el-popover
placement=
"bottom"
width=
"300"
trigger=
"click"
>
<el-popover
placement=
"bottom"
width=
"300"
trigger=
"click"
>
<el-input
class=
'mt10'
v-model=
'remarkString'
type=
'textarea'
></el-input>
<table>
<tr>
<td
style=
"text-align:right;width:80px;"
>
地接团号:
</td>
<td>
<el-input
class=
'mt10'
v-model=
'NumObj.DMCNum'
type=
'text'
></el-input>
</td>
</tr>
<tr>
<td
colspan=
"2"
>
此团号会带到,房、餐、车、景点使用.并且会显示在组团团控列表
</td>
</tr>
<tr>
<td
style=
"text-align:right;"
>
备注:
</td>
<td>
<el-input
class=
'mt10'
v-model=
'NumObj.remarkString'
type=
'textarea'
></el-input>
<br
/>
</td>
</tr>
<tr>
<td
colspan=
"2"
>
此备注会现在在组团团控列表.
</td>
</tr>
</table>
<p
class=
"alcenter mt10"
>
<p
class=
"alcenter mt10"
>
<input
type=
"button"
value=
"保存"
@
click=
"saveRemark"
class=
"normalBtn"
/>
<input
type=
"button"
value=
"保存"
@
click=
"saveRemark"
class=
"normalBtn"
/>
</p>
</p>
<el-button
type=
"primary"
icon=
"iconfont icon-beizhu"
slot=
"reference"
@
click=
'CkedItem(item)'
<el-button
type=
"primary"
icon=
"iconfont icon-beizhu"
slot=
"reference"
@
click=
'CkedItem(item,outItem.TCIDs)'
style=
"background:#AD9AF6; border-color:#AD9AF6; border-radius: 0;"
></el-button>
style=
"background:#AD9AF6; border-color:#AD9AF6; border-radius: 0;"
></el-button>
</el-popover>
</el-popover>
</el-tooltip>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"收付款"
placement=
"top-start"
>
<el-button
icon=
"iconfont icon-shoufukuan"
@
click=
"goUrlT('teamRevenueExpenditure',item.TCID,'团队收支')"
type=
"primary"
style=
"background:#00C6FF; border-color:#00C6FF"
></el-button>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"联系OP"
placement=
"top-start"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"联系OP"
placement=
"top-start"
>
<el-button
@
click=
'openChart(item)'
icon=
"iconfont icon-dianhua"
type=
"primary"
<el-button
@
click=
'openChart(item)'
icon=
"iconfont icon-dianhua"
type=
"primary"
style=
"background:#6DD875; border-color:#6DD875"
></el-button>
style=
"background:#6DD875; border-color:#6DD875"
></el-button>
</el-tooltip>
</el-tooltip>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"地接团号"
placement=
"top-start"
>
<el-popover
placement=
"bottom"
width=
"300"
trigger=
"click"
>
<el-input
class=
'mt10'
v-model=
'NumObj.DMCNum'
type=
'textarea'
></el-input>
<p
class=
"alcenter mt10"
>
<input
type=
"button"
value=
"保存"
@
click=
"UpdateCombinationNum()"
class=
"normalBtn"
/>
</p>
<el-button
type=
"primary"
icon=
"iconfont icon-jituan"
slot=
"reference"
@
click=
'ClickNumItem(item.DMCNum,outItem.NewCombinationNum,outItem.TCIDs)'
style=
"background:#3333FF; border-color:#AD9AF6; border-radius: 0;"
></el-button>
</el-popover>
</el-tooltip>
</el-button-group>
</el-button-group>
</div>
</div>
</td>
</td>
...
@@ -400,8 +416,6 @@
...
@@ -400,8 +416,6 @@
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
ckedTCID
:
0
,
remarkString
:
''
,
loading
:
false
,
loading
:
false
,
currentPage
:
1
,
currentPage
:
1
,
total
:
0
,
total
:
0
,
...
@@ -430,7 +444,8 @@
...
@@ -430,7 +444,8 @@
//地接团号对象
//地接团号对象
NumObj
:
{
NumObj
:
{
DMCNum
:
""
,
DMCNum
:
""
,
TCIDs
:
""
TCIDs
:
""
,
remarkString
:
''
,
},
},
queryCommonData
:
{
queryCommonData
:
{
//公司数据
//公司数据
...
@@ -468,15 +483,13 @@
...
@@ -468,15 +483,13 @@
avatar
:
obj
.
CreateByPhoto
avatar
:
obj
.
CreateByPhoto
})
})
},
},
CkedItem
(
obj
)
{
CkedItem
(
obj
,
TCIDs
)
{
this
.
ckedTCID
=
obj
.
TCID
;
this
.
NumObj
.
TCIDs
=
TCIDs
;
this
.
remarkString
=
obj
.
DMCRemark
;
this
.
NumObj
.
remarkString
=
obj
.
DMCRemark
;
this
.
NumObj
.
DMCNum
=
obj
.
DMCNum
;
},
},
saveRemark
()
{
saveRemark
()
{
this
.
apipost
(
'dmcstatistics_post_SetDMCRemark'
,
{
this
.
apipost
(
'dmcstatistics_post_SetDMCRemark'
,
this
.
NumObj
,
res
=>
{
TCID
:
this
.
ckedTCID
,
DMCRemark
:
this
.
remarkString
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
res
.
data
.
message
)
this
.
$message
.
success
(
res
.
data
.
message
)
this
.
getList
()
this
.
getList
()
...
@@ -640,31 +653,6 @@
...
@@ -640,31 +653,6 @@
}
}
},
err
=>
{})
},
err
=>
{})
},
},
ClickNumItem
(
DMCNum
,
newCombinationNum
,
tcids
)
{
if
(
DMCNum
&&
DMCNum
!=
""
)
{
this
.
NumObj
.
DMCNum
=
DMCNum
;
}
else
{
this
.
NumObj
.
DMCNum
=
newCombinationNum
;
}
this
.
NumObj
.
TCIDs
=
tcids
;
},
//保存地接团号
UpdateCombinationNum
()
{
this
.
loading
=
true
;
let
msg
=
{
DMCNum
:
this
.
NumObj
.
DMCNum
,
TCIDs
:
this
.
NumObj
.
TCIDs
};
this
.
apipost
(
'dmcstatistics_post_UpdateCombinationNum'
,
msg
,
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
getList
();
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
//初始化公司
//初始化公司
getCompanyList
()
{
getCompanyList
()
{
let
userInfo
=
this
.
getLocalStorage
()
let
userInfo
=
this
.
getLocalStorage
()
...
...
src/plug/index.js
View file @
d00ef0ec
...
@@ -226,8 +226,6 @@ export default {
...
@@ -226,8 +226,6 @@ export default {
Vue
.
prototype
.
uploadImg
=
function
(
tcID
,
msg
,
successCall
,
faildCall
)
{
Vue
.
prototype
.
uploadImg
=
function
(
tcID
,
msg
,
successCall
,
faildCall
)
{
var
apiurl
=
this
.
domainManager
().
UploadUrl
+
'/Upload/UploadBase64Two?fileType=1&fileLimit=5&&filePath=Freature/'
+
tcID
;
var
apiurl
=
this
.
domainManager
().
UploadUrl
+
'/Upload/UploadBase64Two?fileType=1&fileLimit=5&&filePath=Freature/'
+
tcID
;
console
.
log
(
"msg"
,
msg
);
this
.
$http
.
post
(
apiurl
,
{
this
.
$http
.
post
(
apiurl
,
{
FileIndex
:
msg
.
FileIndex
,
FileIndex
:
msg
.
FileIndex
,
MyFile
:
msg
.
MyFile
MyFile
:
msg
.
MyFile
...
@@ -238,7 +236,6 @@ export default {
...
@@ -238,7 +236,6 @@ export default {
}).
then
(
function
(
res
)
{
}).
then
(
function
(
res
)
{
console
.
log
(
res
)
console
.
log
(
res
)
})
})
}
}
...
@@ -310,11 +307,10 @@ export default {
...
@@ -310,11 +307,10 @@ export default {
}
}
var
apiNewurl
=
this
.
domainManager
().
PostUrl
;
var
apiNewurl
=
this
.
domainManager
().
PostUrl
;
var
timestamp
=
(
new
Date
()).
valueOf
();
var
timestamp
=
(
new
Date
()).
valueOf
();
var
uid
=
0
;
if
(
!
this
.
getLocalStorageSupplier
().
userInfo
&&
this
.
getLocalStorageSupplier
().
userInfo
!=
""
&&
this
.
$route
.
path
.
toLowerCase
()
!=
"/supplierlogin"
)
{
if
(
this
.
getLocalStorageSupplier
())
{
}
uid
=
this
.
getLocalStorageSupplier
().
SupplierAccountId
;
else
}
else
{
{
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
'/SupplierLogin'
path
:
'/SupplierLogin'
})
})
...
@@ -334,7 +330,7 @@ export default {
...
@@ -334,7 +330,7 @@ export default {
"timestamp"
:
timestamp
,
"timestamp"
:
timestamp
,
"token"
:
token
,
"token"
:
token
,
"sign"
:
md5Str
,
"sign"
:
md5Str
,
"uid"
:
this
.
getLocalStorageSupplier
().
SupplierAccountI
d
"uid"
:
ui
d
}
}
this
.
$http
.
post
(
apiNewurl
,
postData
,
{
this
.
$http
.
post
(
apiNewurl
,
postData
,
{
...
@@ -458,8 +454,8 @@ export default {
...
@@ -458,8 +454,8 @@ export default {
},
},
Vue
.
prototype
.
getLocalStorageSupplier
=
function
()
{
Vue
.
prototype
.
getLocalStorageSupplier
=
function
()
{
var
localStorageData
=
window
.
localStorage
[
"
Suppli
erInfo"
];
var
localStorageData
=
window
.
localStorage
[
"
us
erInfo"
];
if
(
localStorageData
!==
undefined
&&
localStorageData
!=
'
Suppli
erInfo'
)
{
if
(
localStorageData
!==
undefined
&&
localStorageData
!=
'
us
erInfo'
)
{
return
JSON
.
parse
(
localStorageData
);
return
JSON
.
parse
(
localStorageData
);
}
else
{
}
else
{
return
null
;
return
null
;
...
@@ -611,7 +607,7 @@ export default {
...
@@ -611,7 +607,7 @@ export default {
let
fileName
=
nameList
[
index
]
let
fileName
=
nameList
[
index
]
fileName
=
path
+
fileName
+
"."
+
files
[
index
].
name
.
split
(
'.'
).
pop
()
fileName
=
path
+
fileName
+
"."
+
files
[
index
].
name
.
split
(
'.'
).
pop
()
var
formData
=
new
FormData
();
var
formData
=
new
FormData
();
var
uploadUrl
=
that
.
domainManager
().
UploadUrl
+
"/Upload?filePath="
+
path
+
'&ocr='
+
ocr
;
var
uploadUrl
=
that
.
domainManager
().
UploadUrl
+
"/Upload?filePath="
+
path
+
'&ocr='
+
ocr
;
formData
.
append
(
"myfile"
,
files
[
index
]);
formData
.
append
(
"myfile"
,
files
[
index
]);
that
.
$http
.
post
(
uploadUrl
,
formData
,
{})
that
.
$http
.
post
(
uploadUrl
,
formData
,
{})
.
then
(
res
=>
{
.
then
(
res
=>
{
...
@@ -697,7 +693,7 @@ export default {
...
@@ -697,7 +693,7 @@ export default {
}
}
item
[
filed
]
=
value
;
item
[
filed
]
=
value
;
}
}
Vue
.
prototype
.
checkTime
=
function
(
item
,
filed
)
{
Vue
.
prototype
.
checkTime
=
function
(
item
,
filed
)
{
var
date
=
item
[
filed
];
var
date
=
item
[
filed
];
if
(
date
.
length
==
1
)
{
if
(
date
.
length
==
1
)
{
var
v1
=
date
.
substring
(
0
,
1
);
var
v1
=
date
.
substring
(
0
,
1
);
...
@@ -1027,7 +1023,6 @@ export default {
...
@@ -1027,7 +1023,6 @@ export default {
return
"dir-small"
return
"dir-small"
let
css
=
""
let
css
=
""
icons
.
forEach
(
x
=>
{
icons
.
forEach
(
x
=>
{
//console.log(x.filesIcon.hasOwnProperty(suffix))
if
(
x
.
filesIcon
.
hasOwnProperty
(
suffix
))
{
if
(
x
.
filesIcon
.
hasOwnProperty
(
suffix
))
{
css
=
x
.
filesIcon
[
suffix
][
0
]
css
=
x
.
filesIcon
[
suffix
][
0
]
return
false
return
false
...
...
src/router/config.js
View file @
d00ef0ec
import
login
from
'../components/Login'
import
login
from
'../components/Login'
import
index
from
'../components/index'
import
index
from
'../components/index'
import
supplierLogin
from
'../components/SupplierLogin'
import
supplierIndex
from
'../components/SupplierIndex'
export
default
{
export
default
{
routes
:
[{
routes
:
[{
path
:
'/'
,
path
:
'/'
,
...
@@ -696,46 +698,6 @@ export default {
...
@@ -696,46 +698,6 @@ export default {
title
:
'酒店查询统计'
title
:
'酒店查询统计'
},
},
},
},
{
path
:
'/HotelManagement2'
,
//供应商->酒店管理
name
:
'HotelManagement2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelManagement'
],
resolve
),
meta
:
{
title
:
'酒店管理'
},
},
{
path
:
'/HotelSalesBoard2'
,
//供应商->酒店统计
name
:
'HotelSalesBoard2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelSalesBoard'
],
resolve
),
meta
:
{
title
:
'酒店统计'
},
},
{
path
:
'/HotelTotalStock2'
,
//供应商->总库存看板
name
:
'HotelTotalStock2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelTotalStock'
],
resolve
),
meta
:
{
title
:
'总库存看板'
},
},
{
path
:
'/roomQuery2'
,
//供应商->定房查询
name
:
'roomQuery2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/roomQuery'
],
resolve
),
meta
:
{
title
:
'定房查询'
},
},
{
path
:
'/HotelQueryList2'
,
//供应商->酒店查询
name
:
'HotelQueryList2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelQueryList'
],
resolve
),
meta
:
{
title
:
'酒店查询'
},
},
{
{
path
:
'/RestauranOrder'
,
//餐厅订单信息
path
:
'/RestauranOrder'
,
//餐厅订单信息
name
:
'RestauranOrder'
,
name
:
'RestauranOrder'
,
...
@@ -3396,6 +3358,72 @@ export default {
...
@@ -3396,6 +3358,72 @@ export default {
meta
:
{
meta
:
{
title
:
'领队报账'
title
:
'领队报账'
}
}
}
},
{
path
:
'/supplierLogin'
,
//供应商登录
name
:
'supplierLogin'
,
component
:
supplierLogin
},
{
path
:
'/supplierIndex'
,
//供应商首页
name
:
'supplierIndex'
,
component
:
supplierIndex
,
children
:
[
{
path
:
'/HotelManagement2'
,
//供应商->酒店管理
name
:
'HotelManagement2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelManagement'
],
resolve
),
meta
:
{
title
:
'酒店管理'
},
},
{
path
:
'/HotelInfo2'
,
//供应商->酒店详情
name
:
'HotelInfo2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelInfo'
],
resolve
),
meta
:
{
title
:
'酒店统计'
},
},
{
path
:
'/HotelSalesBoard2'
,
//供应商->酒店统计
name
:
'HotelSalesBoard2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelSalesBoard'
],
resolve
),
meta
:
{
title
:
'酒店统计'
},
},
{
path
:
'/HotelProductManage3'
,
//供应商->酒店统计
name
:
'HotelProductManage3'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelProductManage'
],
resolve
),
meta
:
{
title
:
'酒店产品管理'
},
},
{
path
:
'/HotelTotalStock2'
,
//供应商->总库存看板
name
:
'HotelTotalStock2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelTotalStock'
],
resolve
),
meta
:
{
title
:
'总库存看板'
},
},
{
path
:
'/roomQuery2'
,
//供应商->定房查询
name
:
'roomQuery2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/roomQuery'
],
resolve
),
meta
:
{
title
:
'定房查询'
},
},
{
path
:
'/HotelQueryList2'
,
//供应商->酒店查询
name
:
'HotelQueryList2'
,
component
:
resolve
=>
require
([
'@/components/Supplier/HotelQueryList'
],
resolve
),
meta
:
{
title
:
'酒店查询'
},
}]
},
]
]
}
}
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