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
2cf143bf
Commit
2cf143bf
authored
Jan 05, 2023
by
youjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
no message
parent
e7d3ca71
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
2568 additions
and
40 deletions
+2568
-40
HotelOrderList.vue
src/components/Hotel/reservation/HotelOrderList.vue
+15
-4
OrderList.vue
src/components/Hotel/reservation/OrderList.vue
+99
-26
HotelList.vue
src/components/Hotel/singleProduct/HotelList.vue
+1
-2
HotelOrder.vue
src/components/Hotel/singleProduct/HotelOrder.vue
+34
-0
HotelOrderOP.vue
src/components/Hotel/singleProduct/HotelOrderOP.vue
+117
-0
ModifyHotelOrder.vue
src/components/Hotel/singleProduct/ModifyHotelOrder.vue
+388
-0
ChosenHotel.vue
...components/Hotel/singleProduct/components/ChosenHotel.vue
+774
-0
OrderList.vue
src/components/Hotel/singleProduct/components/OrderList.vue
+1107
-0
MyCustomer.vue
src/components/SalesModule/MyCustomer.vue
+8
-7
config.js
src/router/config.js
+25
-1
No files found.
src/components/Hotel/reservation/HotelOrderList.vue
View file @
2cf143bf
...
...
@@ -106,7 +106,7 @@
</ul>
</div>
<template>
<OrderList
:OrderList=
"OrderList"
v-loading=
"loading"
@
success=
"GetList"
>
</OrderList>
<OrderList
:
pagesTitle=
"pagesTitle"
:
OrderList=
"OrderList"
v-loading=
"loading"
@
success=
"GetList"
>
</OrderList>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
</el-pagination>
...
...
@@ -116,6 +116,7 @@
<
script
>
import
OrderList
from
'./OrderList.vue'
;
export
default
{
props
:[
'pagesTitle'
],
components
:
{
OrderList
},
data
()
{
return
{
...
...
@@ -163,7 +164,11 @@
Datelist
:
''
};
},
watch
:
{
pagesTitle
(
val
,
oldval
){
}
},
methods
:
{
getDates
(){
console
.
log
(
this
.
Datelist
)
...
...
@@ -226,8 +231,14 @@
// this.msg.EndTime = this.getyMDTwo()
// }
this
.
loading
=
true
this
.
apipost
(
"dict_post_GetAdminCustomerOrderPageList"
,
this
.
msg
,
let
url
// 销售 OP
if
(
this
.
pagesTitle
){
url
=
"dict_post_GetMySaleCustomerOrderPageList"
}
else
{
url
=
"dict_post_GetAdminCustomerOrderPageList"
}
this
.
apipost
(
url
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
.
pageData
...
...
src/components/Hotel/reservation/OrderList.vue
View file @
2cf143bf
...
...
@@ -349,8 +349,8 @@
<span
class=
"mr"
>
{{
item
.
SaleName
}}
</span>
<span
class=
"mr"
>
创建人:
</span>
<span
class=
"mr"
<span
class=
"mr"
v-if=
"!pagesTitle&&item.CustomerName"
>
创建人:
</span>
<span
class=
"mr"
v-if=
"!pagesTitle&&item.CustomerName"
>
{{
item
.
CustomerName
}}
(
{{
item
.
CustomerContact
}}
/
{{
item
.
CustomerTel
}}
)
</span
...
...
@@ -523,16 +523,17 @@
</el-table-column>
</el-table>
<div
class=
"row justify-sb mt mb20"
v-if=
"item.OrderStatus!=3"
>
<div
class=
"row pt20"
v-if=
"item.GuestFileList.length > 0
"
>
<div
class=
"row pt20"
style=
"margin-right: 10px;"
v-if=
"item.GuestFileList.length > 0||((item.CustomerPayType==1 || item.CustomerPayType==3)&&pagesTitle)
"
>
<!-- <i class="el-icon-warning cF57A98 fz15 mr"></i> -->
<div
class=
"column"
>
<!-- <div class="wrap fz12 c9e">
<!-- <div class="wrap fz12 c9e"
v-if="x.CustomerPayType == 2 || x.CustomerPayType == 3"
>
出发前收款酒店,请您于
<span class="cff9800">{{item.PaymentDate}}</span>
前支付定金,并且于
<span class="cF1416C">{{item.FinalPaymentDate}}</span>
日前支付尾款
</div> -->
<
template
v-if=
"item.GuestFileList.length > 0"
>
<div
class=
"wrap fz12 c9e"
>
旅客名单
</div>
...
...
@@ -551,15 +552,22 @@
<!--
<div
class=
"cursor-pointer see c04C8C8"
>
查看支付方式
</div>
<div
class=
"cursor-pointer ml rec cf"
>
提交付费凭证
</div>
-->
</div>
<!-- <template v-if="item.CustomerPayType==1 || item.CustomerPayType==3">
</
template
>
<
template
v-if=
"(item.CustomerPayType==1 || item.CustomerPayType==3)&&pagesTitle"
>
<div
class=
"fz12 mt c9e"
>
到店自付酒店,需要您于
<span
class=
"cff9800"
>
{{
item
.
UploadGuestDate
}}
</span>
</div>
<div
class=
"row fz12 see-rec mt"
>
<div class="cursor-pointer seeLK c059FF6">上车旅客名单</div>
<el-upload
ref=
"my-upload"
:http-request=
"uploadFileBtn"
v-loading=
"loading"
:multiple=
"true"
:show-file-list=
"false"
action=
""
>
<div
:class=
"
{'cursor-pointer seeLK c059FF6':!loading,
'cursor-pointer see c04C8C8':loading}"
@click="uploadOrderId=item.OrderId">上车旅客名单
</div>
</el-upload>
</div>
</template>
-->
</
template
>
</div>
</div>
<div
class=
"column px15 bgf5 radius5 flex-g pa relative"
>
...
...
@@ -628,7 +636,7 @@
</span>
</div>
<el-tooltip
v-if=
"item.OrderStatus == 2"
v-if=
"item.OrderStatus == 2
&&pagesTitle!='销售'
"
class=
"item"
effect=
"dark"
content=
"制单"
...
...
@@ -657,7 +665,7 @@
</span>
</div>
<el-tooltip
v-if=
"item.OrderStatus == 2"
v-if=
"item.OrderStatus == 2
&&pagesTitle!='销售'
"
class=
"item"
effect=
"dark"
content=
"制单"
...
...
@@ -680,7 +688,7 @@
</div>
<div
class=
"row-c justify-sb borderD py5"
v-if=
"
item.CustomerPayType == 1 || item.CustomerPayType == 3
"
v-if=
"
(item.CustomerPayType == 1 || item.CustomerPayType == 3)&&!pagesTitle
"
>
<span
class=
"fz12 c9e"
>
到店自付
</span>
<div
class=
"ml"
>
...
...
@@ -720,7 +728,7 @@
<span
class=
"cF1416C"
>
取消订单
</span>
</div>
<div
v-if=
"item.OrderStatus == 1"
v-if=
"item.OrderStatus == 1
&&pagesTitle!='销售'
"
class=
"row-c cursor-pointer radius5 confirm py5"
@
click=
"clickRightButtom(item, 1)"
>
...
...
@@ -734,6 +742,13 @@
>
<span
class=
"c059FF6"
>
明细/编辑
</span>
</div>
<div
v-if=
"item.OrderStatus == 1&&pagesTitle"
class=
"row-c cursor-pointer radius5 change py5"
@
click=
"goRoomDetails(item, '酒店预定变更')"
>
<span
class=
"c059FF6"
>
订单变更
</span>
</div>
<div
v-if=
"item.OrderStatus == 2"
class=
"row-c cursor-pointer radius5 change1 py5"
...
...
@@ -848,7 +863,7 @@
</template>
<
script
>
export
default
{
props
:
[
"OrderList"
],
props
:
[
"OrderList"
,
"pagesTitle"
],
data
()
{
return
{
copyId
:
0
,
...
...
@@ -880,11 +895,57 @@ export default {
},
cancelOrderDialog
:
false
,
cancelRemark
:
""
,
cancelOrderId
:
0
cancelOrderId
:
0
,
uploadOrderId
:
0
,
loading
:
false
,
fileList
:[],
GuestFile
:
''
};
},
watch
:
{
pagesTitle
(
val
,
oldval
){
},
},
methods
:
{
uploadFileBtn
(
file
){
let
ft
=
file
.
file
.
name
.
substring
(
file
.
file
.
name
.
lastIndexOf
(
'.'
)
+
1
,
file
.
file
.
name
.
length
).
toUpperCase
();
let
typeOk
=
false
;
let
FileName
=
file
.
file
.
name
.
substring
(
0
,
file
.
file
.
name
.
lastIndexOf
(
"."
))
let
newArr
=
[];
newArr
.
push
(
file
.
file
)
let
path
=
"/Upload/Temporary/"
this
.
$message
.
info
(
this
.
$t
(
'tips.shangchuanzhong'
))
this
.
UploadSelfFileT
(
path
,
newArr
,
x
=>
{
this
.
GuestFile
=
this
.
domainManager
().
ViittoFileUrl
+
x
.
data
.
FilePath
this
.
uploadHandleChange
()
},
1
);
},
// 上传旅客名单
uploadHandleChange
(){
let
msg
=
{
OrderId
:
this
.
uploadOrderId
,
GuestFileList
:
[
this
.
GuestFile
]
}
this
.
loading
=
true
this
.
apipost
(
"dict_post_SetSaleOrderGuestFile"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
loading
=
false
;
this
.
Success
(
res
.
data
.
message
);
this
.
uploadOrderId
=
0
this
.
GuestFile
=
''
this
.
$emit
(
"success"
);
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{
this
.
loading
=
false
;
}
);
},
// 单据详情
openDetails
(
item
)
{
let
query
=
{
...
...
@@ -925,7 +986,9 @@ export default {
},
// 订单明细
goRoomDetails
(
obj
,
title
)
{
var
path
=
"roomReservationsDetails"
;
var
path
if
(
title
===
'订房详情'
){
path
=
"roomReservationsDetails"
;
if
(
this
.
userInfo
.
RB_Group_id
==
91
)
{
path
=
"roomReservationsDetails_swt"
;
}
...
...
@@ -938,6 +1001,16 @@ export default {
tab
:
title
}
});
}
else
{
//变更酒店预定
path
=
"singleProductModifyHotelOrder"
;
this
.
$router
.
push
({
name
:
path
,
query
:
{
id
:
obj
.
OrderId
,
tab
:
title
}
});
}
},
clickRightButtom
(
item
,
type
)
{
// 0取消订单 1确认订单
...
...
src/components/Hotel/singleProduct/HotelList.vue
View file @
2cf143bf
...
...
@@ -470,7 +470,7 @@
com_onresize
()
{
//clientHeight的值由DIV内容的实际高度和CSS中的padding值决定,
var
contentsHeight
=
document
.
body
.
clientHeight
;
var
h
=
contentsHeight
-
50
-
180
-
5
0
;
var
h
=
contentsHeight
-
50
-
180
-
10
0
;
if
(
h
<
110
)
{
return
;
}
...
...
@@ -704,7 +704,6 @@
newCars
.
push
(
item
)
}
})
if
(
!
states
){
this
.
HotelLength
=
newCars
.
length
localStorage
.
removeItem
(
"cars"
)
...
...
src/components/Hotel/singleProduct/HotelOrder.vue
0 → 100644
View file @
2cf143bf
<
style
>
</
style
>
<
template
>
<div>
<HotelOrderList
:pagesTitle=
"pagesTitle"
></HotelOrderList>
</div>
</
template
>
<
script
>
import
HotelOrderList
from
'../reservation/HotelOrderList.vue'
;
export
default
{
components
:
{
HotelOrderList
},
data
()
{
return
{
pagesTitle
:
'销售'
,
};
},
methods
:
{
},
mounted
()
{
},
};
</
script
>
<
style
>
</
style
>
src/components/Hotel/singleProduct/HotelOrderOP.vue
0 → 100644
View file @
2cf143bf
<
style
>
.HotelWorkList
.has-gutter
tr
th
,
.el-table
th
.is-leaf
{
background-color
:
#EAEAEA
!important
;
}
.HotelWorkList
.HW_hotelDialog
{
width
:
900px
;
}
.HotelWorkList
.Hw_tableOne
{
width
:
100%
;
height
:
40px
;
background-color
:
#EAEAEA
;
}
.HotelWorkList
.Hw_tableOne
th
{
text-align
:
center
;
}
.HotelWorkList
.HotelWorkInput
.el-input
{
width
:
223px
;
}
.HotelWorkList
.HworkInput
.el-input
{
width
:
110px
;
}
</
style
>
<
template
>
<div>
<HotelOrderList
:pagesTitle=
"pagesTitle"
></HotelOrderList>
</div>
</
template
>
<
script
>
import
HotelOrderList
from
'../reservation/HotelOrderList.vue'
;
export
default
{
components
:
{
HotelOrderList
},
data
()
{
return
{
pagesTitle
:
'OP'
,
};
},
methods
:
{
//获取酒店订单列表
GetList
()
{
// if(this.msg.StartTime==''){
// this.msg.StartTime = this.getyMDOne()
// }
// if(this.msg.EndTime==''){
// this.msg.EndTime = this.getyMDTwo()
// }
this
.
loading
=
true
this
.
apipost
(
"dict_post_GetMySaleCustomerOrderPageList"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
.
pageData
let
addList
=
function
(
arr
){
arr
.
forEach
(
x
=>
{
x
.
list
=
[]
// x.Tax = 0
// x.Tax2 = 0
})
}
addList
(
data
)
data
.
forEach
(
item
=>
{
item
.
DetailList
.
forEach
(
x
=>
{
x
.
Number
=
0
x
.
PeopleNumber
=
0
x
.
RoomList
.
forEach
(
r
=>
{
x
.
Number
+=
r
.
Number
x
.
PeopleNumber
+=
r
.
PeopleNumber
})
x
.
Tax
=
x
.
TaxesPrice
*
x
.
Number
x
.
Tax2
=
x
.
PriceInTangTax
*
x
.
PeopleNumber
x
.
Money
=
x
.
HotelMoeny
+
x
.
TaxesPrice
})
})
this
.
OrderList
=
data
;
this
.
OrderList
.
forEach
(
item
=>
{
let
datas
=
{
Income
:
item
.
Income
,
CostMoney
:
item
.
CostMoney
,
PlatformTax
:
item
.
PlatformTax
,
Refund
:
item
.
Refund
,
HandFittingIncome
:
item
.
HandFittingIncome
,
HandFittingTax
:
item
.
HandFittingTax
}
item
.
list
.
push
(
datas
)
})
this
.
total
=
res
.
data
.
data
.
count
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{
this
.
loading
=
false
}
);
},
},
mounted
()
{
},
};
</
script
>
<
style
>
</
style
>
src/components/Hotel/singleProduct/ModifyHotelOrder.vue
0 → 100644
View file @
2cf143bf
<
style
scoped
>
.ModifyHotelOrder-OrderId
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
10px
15px
;
border-radius
:
5px
;
background
:
#ffffff
;
font-size
:
12px
;
margin-top
:
15px
;
}
.ModifyHotelOrder-OrderId
>
div
{
display
:
flex
;
align-items
:
center
;
}
.ModifyHotelOrder-OrderId
>
div
:first-child
{
color
:
#9E9E9E
;
}
.ModifyHotelOrder-OrderId
>
div
:nth-child
(
2
)
{
color
:
#E76A42
;
}
.ModifyHotelOrder-OrderId
>
div
:nth-child
(
2
)>
span
{
font-weight
:
bold
;
color
:
#009EF7
;
}
.ModifyHotelOrder-OrderId
>
div
:nth-child
(
2
)>
span
:first-child
{
color
:
#E65152
;
}
.ModifyHotelOrder-OrderId
>
div
:nth-child
(
3
)
{
color
:
#F25971
;
}
.ModifyHotelOrder-OrderId
>
div
:nth-child
(
3
)>
span
:first-child
{
font-size
:
16px
;
}
.ModifyHotelOrder-OrderId
>
div
:nth-child
(
3
)>
b
{
font-size
:
20px
;
}
.ModifyHotelOrder-OrderId
>
div
:last-child
{
display
:
flex
;
font-size
:
16px
;
}
.ModifyHotelOrder-OrderInfor
{
padding
:
10px
15px
;
border-radius
:
5px
;
background
:
#ffffff
;
margin-top
:
15px
;
}
.ModifyHotelOrder-OrderInfor
p
{
color
:
#C1C1C1
;
font-size
:
14px
;
}
.ModifyHotelOrder-content
{
display
:
flex
;
align-items
:
flex-start
;
flex-wrap
:
wrap
;
margin-top
:
15px
;
}
.content-box
{
width
:
320px
;
display
:
flex
;
flex-direction
:
column
;
background
:
#ffffff
;
border-radius
:
5px
;
margin-right
:
15px
;
overflow
:
hidden
;
}
.content-header
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
15px
10px
;
}
.content-header
span
{
font-size
:
17px
;
}
.content-header
i
{
color
:
#009EF7
;
cursor
:
pointer
;
}
.content-header
i
:last-child
{
color
:
#F1416C
;
margin-left
:
15px
;
}
.content-Car
{
background
:
#ECEFF1
;
border-radius
:
5px
;
padding
:
10px
5px
;
margin
:
0
10px
;
margin-bottom
:
10px
;
font-size
:
12px
;
}
.content-Car-title
{
font-size
:
14px
;
font-weight
:
400
;
color
:
#009EF7
;
padding
:
0
5px
;
display
:
flex
;
justify-content
:
space-between
;
border-bottom
:
1px
dashed
rgba
(
96
,
125
,
139
,
0.2
);
margin-bottom
:
5px
;
}
.content-Car-title
span
{
width
:
80%
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
}
.content-Car-title
i
{
color
:
#F1416C
;
cursor
:
pointer
;
display
:
none
;
}
.content-Car-title
:hover
.content-Car-title
i
{
display
:
block
;
}
.content-Car-num
{
padding
:
7px
5px
;
align-items
:
center
;
}
.num-roomtype
span
{
color
:
#6F8A96
;
padding
:
5px
0
0
0
;
display
:
block
;
}
.num-roomnum
{
color
:
#9E9E9E
;
}
.num-roomnum
span
{
color
:
#F5831E
;
font-weight
:
bold
;
}
.noroomtype
{
padding
:
10px
5px
;
color
:
#6F8A96
;
font-size
:
12px
;
}
.content-Car-shui
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
font-size
:
14px
;
color
:
#6F8A96
;
border-top
:
1px
dashed
rgba
(
96
,
125
,
139
,
0.2
);
border-bottom
:
1px
dashed
rgba
(
96
,
125
,
139
,
0.2
);
padding
:
7px
0
;
margin
:
0
5px
;
}
.content-Car-heji
{
padding
:
7px
5px
0
0
;
display
:
flex
;
justify-content
:
end
;
font-size
:
14px
;
color
:
#1CA8F6
;
}
.content-Car-heji
span
span
{
font-size
:
15px
;
font-weight
:
bold
;
}
.content-picker-text
{
height
:
240px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
center
;
align-items
:
center
;
font-size
:
14px
;
}
.content-picker-text
>
div
:first-child
span
{
border
:
1px
solid
#47B6F5
;
padding
:
5px
15px
;
border-radius
:
3px
;
cursor
:
pointer
;
color
:
#47B6F5
;
}
.content-picker-text
>
div
:last-child
{
margin-top
:
20px
;
}
.content-picker-text
>
div
:last-child
span
{
color
:
#A5B5BE
;
}
/
deep
/
.content-Car
.el-input-number
.el-input__inner
{
height
:
30px
;
}
/
deep
/
.content-Car
.el-input-number
{
width
:
106px
;
line-height
:
30px
;
}
/
deep
/
.content-Car
.el-input-number__increase
{
width
:
25px
!important
;
height
:
28px
!important
;
}
/
deep
/
.content-Car
.el-input-number__decrease
{
width
:
25px
!important
;
height
:
28px
!important
;
}
/
deep
/
.content-Car
.el-input-number
.el-input__inner
{
padding-left
:
20px
;
padding-right
:
20px
;
}
</
style
>
<
template
>
<div>
<div
class=
"ModifyHotelOrder-OrderId"
>
<div>
订单编号
</div>
<div>
本次行程
<span>
5
</span>
天,入住
<span>
5
</span>
个酒店
</div>
<div>
订单总金额:
<span>
¥
</span><b>
175.000
</b></div>
<div>
<button
class=
"hollowFixedBtn"
>
取消订单
</button>
<button
class=
"normalBtn"
>
保存订单
</button>
</div>
</div>
<div
class=
"ModifyHotelOrder-OrderInfor"
>
<p>
订单信息
</p>
<div>
<el-form
label-width=
"60px"
:model=
"parameters"
:rules=
"rules"
ref=
"parameters"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"4"
>
<el-form-item
label=
"类型"
prop=
"OrderType"
>
<el-select
v-model=
"parameters.OrderType"
>
<el-option
v-for=
"item in cacheHotels"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
></el-option>
</el-select>
</el-form-item>
</el-col>
<template
v-if=
"parameters.OrderType==1"
>
<el-col
:span=
"4"
>
<el-form-item
label=
"姓名"
prop=
"ContactName"
>
<el-input
v-model=
"parameters.ContactName"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
label=
"电话"
prop=
"ContactNumber"
>
<el-input
v-model=
"parameters.ContactNumber"
></el-input>
</el-form-item>
</el-col>
</
template
>
<el-col
:span=
"4"
v-else
>
<el-form-item
label=
"团号"
prop=
"TCNum"
>
<el-input
v-model=
"parameters.TCNum"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"备注"
prop=
""
>
<el-input
placeholder=
"请输入备注"
v-model=
"parameters.Remark"
></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<div
class=
"ModifyHotelOrder-content"
>
<div>
<div
class=
"content-box"
>
<div
class=
"content-header"
>
<span>
日期
</span>
<div>
<i
class=
"el-icon-plus"
></i>
<i
class=
"el-icon-delete-solid"
></i>
</div>
</div>
<div>
<div
class=
"content-Car"
v-for=
"item in 3"
>
<p
class=
"content-Car-title"
>
<span>
酒店名称
</span>
<i
class=
"el-icon-delete-solid"
></i>
</p>
<div
class=
"content-Car-num"
>
<el-row
:gutter=
"20"
style=
"display: flex;align-items: center;justify-content: space-between;"
>
<el-col
:span=
"7"
>
<div
class=
"num-roomtype"
>
<p>
标间
</p>
<span>
785/人
</span>
</div>
</el-col>
<el-col
:span=
"7"
>
<p
class=
"num-roomnum"
>
预计
<span>
1
</span>
间房
</p>
</el-col>
<el-col
:span=
"10"
>
<el-input-number
v-model=
"num"
:min=
"0"
:step=
"1"
step-strictly
></el-input-number>
</el-col>
</el-row>
</div>
<div
class=
"noroomtype"
>
无其他可用房型
</div>
<div
class=
"content-Car-shui"
>
<span>
城市税: 0/人
</span>
<span>
入汤税: 0/人
</span>
</div>
<div
class=
"content-Car-heji"
>
<span>
合计:
<span>
¥185255
</span></span>
</div>
</div>
</div>
</div>
</div>
<div
class=
"content-box"
>
<div
class=
"content-header"
>
<span>
新日期预定
</span>
<div>
<el-date-picker
class=
"w150"
v-model=
"dates"
type=
"date"
value-format=
"yyyy-MM-dd"
placeholder=
"请选择日期"
></el-date-picker>
</div>
</div>
<div
class=
"content-Car content-picker-text"
>
<div>
<span>
选择酒店
</span>
</div>
<div>
<span>
*
<span>
请先选择需要预定的日期
</span></span>
</div>
</div>
</div>
</div>
<el-dialog
custom-class=
"w800"
title=
"酒店检索"
:visible
.
sync=
"showChosenHotel"
center
>
<ChosenHotel
@
close=
"close"
></ChosenHotel>
</el-dialog>
</div>
</template>
<
script
>
import
ChosenHotel
from
'./components/ChosenHotel.vue'
;
export
default
{
components
:
{
ChosenHotel
},
data
()
{
return
{
dates
:
new
Date
(),
num
:
0
,
showChosenHotel
:
true
,
parameters
:{
Money
:
0
,
DetailList
:
[],
Remark
:
''
,
OrderType
:
1
,
//订单类型 1散客 2团队
TCNum
:
''
,
//=团队时 传递 组团号
ContactName
:
''
,
//=散客时 传递 联系人
ContactNumber
:
''
,
//=散客时 传递 联系人电话
OrderId
:
0
},
cacheHotels
:
[
{
Name
:
'散客'
,
ID
:
1
},
{
Name
:
'团队'
,
ID
:
2
}
],
rules
:{
OrderType
:
[{
required
:
true
,
message
:
'请选择类型'
,
trigger
:
'change'
}],
ContactName
:
[{
required
:
true
,
message
:
'请输入散客姓名'
,
trigger
:
'blur'
}],
ContactNumber
:
[
{
required
:
true
,
message
:
"请输入联系电话"
,
trigger
:
"blur"
},
{
pattern
:
this
.
$commonUtils
.
Regex
.
el_ISphone
,
message
:
"请输入正确的电话"
}
],
TCNum
:
[{
required
:
true
,
message
:
'请输入团号'
,
trigger
:
'blur'
}],
}
};
},
methods
:
{
close
(){
}
},
mounted
()
{
},
};
</
script
>
<
style
>
</
style
>
src/components/Hotel/singleProduct/components/ChosenHotel.vue
0 → 100644
View file @
2cf143bf
<
template
>
<div>
<div
class=
"query-box"
style=
"border-bottom: none;"
>
<ul>
<li>
<span>
<em>
{{
$t
(
'system.quety_area'
)
}}
</em>
<el-select
class=
"option"
v-model=
"msg.Province"
filterable
@
change=
"getProvinceList(msg.Province,2)"
:placeholder=
"$t('hotel.hotel_province')"
>
<el-option
:key=
"0"
:value=
"0"
label=
"请选择"
></el-option>
<el-option
v-for=
"item in provinceList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
></el-option>
</el-select>
<el-select
class=
"option"
v-model=
"msg.City"
filterable
:placeholder=
"$t('hotel.hotel_city')"
>
<el-option
:key=
"0"
:value=
"0"
label=
"请选择"
></el-option>
<el-option
v-for=
"item in cityList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
></el-option>
</el-select>
</span>
</li>
<li><span><em>
日期
</em>
<el-date-picker
class=
"w140"
v-model=
'msg.StartDate'
value-format=
"yyyy-MM-dd"
type=
"date"
:picker-options=
"beforeCheck"
>
</el-date-picker>
<el-date-picker
class=
"w140"
v-model=
'msg.EndDate'
value-format=
"yyyy-MM-dd"
type=
"date"
:picker-options=
"afterCheck"
>
</el-date-picker>
</span>
</li>
<li>
<span>
<em>
酒店
</em>
<el-select
v-model=
"msg.HotelChooseArray"
:placeholder=
"$t('pub.pleaseSel')"
class=
"multiple_input HotelChooseArray"
filterable
multiple
:multiple-limit=
"3"
>
<el-option
v-for=
"item in HotelList"
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
></el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>
星级
</em>
<el-select
class=
"Star"
v-model=
"msg.Star"
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'0'
></el-option>
<el-option
label=
"3星或商务"
:value=
'3'
></el-option>
<el-option
label=
"4星"
:value=
'4'
></el-option>
<el-option
label=
"5星"
:value=
'5'
></el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>
价格区间
</em>
<el-input
class=
"w80"
type=
"Number"
v-model=
"msg.MinPrice"
></el-input>
<span
style=
"padding: 0 10px;"
>
-
</span>
<el-input
class=
"w80"
type=
"Number"
v-model=
"msg.MaxPrice"
></el-input>
</span>
</li>
<li
style=
"position: inherit;"
>
<input
type=
"button"
class=
"normalBtn"
value=
"查询"
@
click=
"getList()"
/>
</li>
</ul>
</div>
<div
style=
"width: 100%;min-height:200px; overflow-x: auto;padding-bottom: 10px; "
class=
"HotelQueryList"
v-loading=
"loading"
>
<div
class=
"hotelProductManage2_tableBox"
style=
"margin-bottom:20px;"
>
<span
style=
"color:#000000;background-color: #ff3737;padding:2px 4px;border-radius:5px"
>
红日
</span>
<span
style=
"color:#000000;background-color: #ff99cc;padding:2px 4px;border-radius:5px"
>
旺季
</span>
<span
style=
"color:#000000;background-color: #bcd6ee;padding:2px 4px;border-radius:5px"
>
平季
</span>
<span
style=
"color:#000000;background-color: #DDDDDD;padding:2px 4px;border-radius:5px"
>
淡季
</span>
<span
style=
"color:#000000;background-color: #02F78E;padding:2px 4px;border-radius:5px"
>
特别价
</span>
<span
style=
"color:#000000;background-color: #808000;padding:2px 4px;border-radius:5px"
>
行前日
</span>
</div>
<template
v-if=
"isShow"
>
<el-table
v-if=
"dataList.length>0"
:data=
"dataList"
style=
"width:100%"
border
v-loading=
'loading'
:height=
"tableHeight"
>
<el-table-column
fixed
label=
"酒店名称"
min-width=
"180"
>
<template
slot-scope=
"scope"
>
<!-- @click="GotoHotel(scope.row.HotelId)" -->
<div
style=
"text-decoration: underline;cursor:pointer"
@
click=
"showHotelDetailHandler(scope.row.HotelId)"
>
{{
scope
.
row
.
HotelName
}}
</div>
<div>
{{
scope
.
row
.
TotalInventory
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"价格&库存"
fixed
min-width=
"120"
>
<
template
slot-scope=
"scope"
>
<div
class=
"Hotel_kong"
>
价格
</div>
<div
class=
"Hotel_kong"
style=
"min-width:60px;"
>
总/用/剩
</div>
<div
class=
"Hotel_kong"
>
确认/预定
</div>
<div
class=
"Hotel_kong"
>
超定
</div>
</
template
>
</el-table-column>
<el-table-column
v-for=
'(item,index) in dataList[0].subList'
:label=
"getDateList(item.DateStr)"
:key=
'index'
min-width=
"120"
>
<
template
slot-scope=
"scope"
>
<div
@
click=
"showOrderSubmitHandler(scope.row,0,index)"
>
<div
class=
"Hotel_kong Com_hoteldiv"
>
<template
v-if=
"scope.row.subList[index].PriceList.length>0"
>
<template
v-for=
"childItem in scope.row.subList[index].PriceList"
>
<div
:class=
"getClass(1,childItem.InventoryType)"
:style=
"
{width:(100/scope.row.subList[index].PriceList.length)+'%'}" class="CostPriceHover">
<el-popover
placement=
"bottom"
width=
"300"
trigger=
"hover"
>
<SamplePriceList
v-if=
"
scope.row.subList[index].PriceList[0].BidroomPrice>0||
scope.row.subList[index].PriceList[0].SingleroomPrice>0||
scope.row.subList[index].PriceList[0].AddBedPrice>0||
scope.row.subList[index].PriceList[0].GuideRoomPrice>0"
:price=
"scope.row.subList[index]"
></SamplePriceList>
<div
v-else
style=
"text-align: center;width: 100%;"
>
没有其他房型报价
</div>
<span
slot=
"reference"
class=
"CostPriceHover"
>
{{
childItem
.
CostPrice
}}
</span>
</el-popover>
</div>
</
template
>
</template>
<
template
v-else
>
<div
:class=
"getClass(0,0)"
style=
"width:100%;height:100%"
>
</div>
</
template
>
</div>
<div
class=
"Hotel_kong Com_hoteldiv Hq_duoge"
>
{{item.Inventory}}/{{item.UseInventory}}/{{item.RemainingInventory}}
</div>
<div
class=
"Hotel_kong Com_hoteldiv"
>
{{item.ConfirmNum}}/{{item.ReserveNum}}
</div>
<div
class=
"Hotel_kong Com_hoteldiv"
>
<span
v-if=
"item.UseInventory-item.Inventory>0"
style=
"color:red;"
>
{{item.UseInventory-item.Inventory}}
</span>
</div>
</div>
</template>
</el-table-column>
</el-table>
<div
class=
"noDataNotice"
v-else
>
<i
class=
"iconfont icon-kong"
></i>
<p>
{{$t("active.ld_noData")}}
</p>
</div>
<el-pagination
v-if=
"dataList.length>0"
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"msg.pageIndex"
layout=
"total,prev, pager, next, jumper"
:page-size=
'msg.pageSize'
:total=
'total'
></el-pagination>
</template>
</div>
</div>
</template>
<
script
>
import
SamplePriceList
from
'./SamplePriceList'
import
TableOperation
from
'./TableOperation'
import
ListCar
from
'./ListCar'
import
hotelDetails
from
'./hotelDetails'
export
default
{
components
:
{
SamplePriceList
,
TableOperation
,
ListCar
,
hotelDetails
},
data
()
{
return
{
showHotelDetails
:
false
,
HotelDetailId
:
0
,
editorType
:
0
,
rightCarOpen
:
false
,
HotelLength
:
0
,
orderSubmitItemObj
:
{},
orderSubmitObj
:
{},
showOrderPreview
:
false
,
total
:
0
,
pickerOptions
:
{
disabledDate
(
time
)
{
return
time
.
getTime
()
>
Date
.
now
();
}
},
msg
:
{
pageIndex
:
1
,
pageSize
:
10
,
//酒店选择数组
HotelChooseArray
:
[],
StartDate
:
this
.
getBeforeDate
(
-
20
,
new
Date
().
Format
(
"yyyy-MM-dd"
)),
EndDate
:
this
.
getBeforeDate
(
-
30
,
this
.
getBeforeDate
(
-
20
,
new
Date
().
Format
(
"yyyy-MM-dd"
))),
//只查询日本
Country
:
"651"
,
Province
:
0
,
City
:
0
,
OutBranchId
:
-
1
,
//星级
Star
:
0
,
//价格等级
PriceLevel
:
0
,
//供应商
Supplier
:
0
,
MaxPrice
:
0
,
MinPrice
:
0
},
tableHeight
:
0
,
beforeCheck
:
{
disabledDate
:
time
=>
{
if
(
this
.
msg
.
StartDate
)
{
let
endTime
=
new
Date
(
this
.
getBeforeDate
(
-
20
,
new
Date
().
Format
(
"yyyy-MM-dd"
)));
return
time
&&
endTime
.
getTime
()
>=
time
.
getTime
();
}
else
{
return
false
;
}
}
},
afterCheck
:
{
disabledDate
:
time
=>
{
if
(
this
.
msg
.
StartDate
)
{
let
startTime
=
new
Date
(
this
.
msg
.
StartDate
);
//可以选择当天
return
time
&&
time
.
getTime
()
<
startTime
.
getTime
()
-
1
*
24
*
60
*
60
*
1000
;
}
else
{
return
false
;
}
}
},
//分公司列表
companyList
:
[],
defaultSelectValue
:
0
,
//国家 省市 区
provinceList
:
[],
cityList
:
[],
district
:
[],
queryMsg
:
{
QStartDate
:
''
,
QEndDate
:
''
,
pageIndex
:
1
,
pageSize
:
5
,
currentPage
:
1
,
total
:
0
,
OpType
:
0
},
postMsg
:
{
Id
:
0
,
TipContent
:
''
,
OpType
:
0
,
},
//默认显示弹窗信息
showHQinfo
:
false
,
//酒店温馨提示列表
HotelTipList
:
[],
//供应商列表
SupplierList
:
[],
HotelList
:
[],
dataList
:
[],
isShow
:
false
,
loading
:
false
,
showNotice
:
false
,
pickerBeginDateBefore
:
{
disabledDate
:
time
=>
{
let
endTime
=
new
Date
(
this
.
queryMsg
.
QStartDate
)
return
endTime
.
getTime
()
<
time
.
getTime
()
}
},
pickerBeginDateAfter
:
{
disabledDate
:
time
=>
{
let
startTime
=
new
Date
(
this
.
queryMsg
.
QEndDate
)
return
startTime
.
getTime
()
>=
time
.
getTime
()
}
},
editorOption
:
{
placeholder
:
'请输入内容'
,
modules
:
{
toolbar
:
[
[
'bold'
,
'italic'
,
'underline'
,
'strike'
],
// toggled buttons
[
'blockquote'
,
'code-block'
,
'align'
]
]
}
},
HOTEL_memorandum
:
false
};
},
methods
:
{
removeEditor
(){
localStorage
.
removeItem
(
'editor'
)
},
// 酒店信息详情
showHotelDetailHandler
(
hotelId
){
this
.
HotelDetailId
=
hotelId
this
.
showHotelDetails
=
true
},
// 编辑购物车
editor
(
x
){
this
.
dataList
.
forEach
((
item
,
index
)
=>
{
if
(
item
.
HotelId
==
x
.
HotelId
){
item
.
subList
.
forEach
(
xs
=>
{
if
(
xs
.
DateStr
==
x
.
Date
){
this
.
rightCarOpen
=
false
this
.
showOrderSubmitHandler
(
item
,
index
,
1
)
}
})
}
})
},
// 提交预约成功
success
(){
this
.
close
()
this
.
getList
()
},
// 取消
close
(){
this
.
HotelLength
=
localStorage
.
getItem
(
"HotelLength"
)?
localStorage
.
getItem
(
"HotelLength"
):
0
this
.
showOrderPreview
=
false
this
.
rightCarOpen
=
false
this
.
showHotelDetails
=
false
localStorage
.
removeItem
(
"editor"
)
},
// 加入购物车
showOrderSubmitHandler
(
row
,
type
,
index
){
this
.
orderSubmitObj
=
row
this
.
orderSubmitItemObj
=
row
.
subList
[
index
]
this
.
showOrderPreview
=
true
this
.
editorType
=
type
?
type
:
0
},
goUrl
(
name
,
id
)
{
this
.
$router
.
push
({
name
:
name
,
query
:
{
blank
:
"y"
,
tab
:
"备忘录"
}
});
},
// 获取供应商
initSupplier
()
{
this
.
apipost
(
"supplier_post_GetAllList"
,
{
Type
:
1
},
res
=>
{
if
(
res
.
data
.
resultCode
===
1
)
{
this
.
SupplierList
=
res
.
data
.
data
;
}
},
err
=>
{});
},
GotoHotel
(
HotelId
)
{
this
.
$router
.
push
({
path
:
"HotelManagement"
,
query
:
{
ID
:
HotelId
,
tab
:
"酒店查询"
,
blank
:
'y'
,
}
});
},
GotoUrl
(
item
,
subIndex
,
UseInventory
)
{
if
(
UseInventory
>
0
)
{
this
.
$router
.
push
({
path
:
"TravelControlList"
,
query
:
{
HotelId
:
item
.
HotelId
,
HotelUseTime
:
item
.
subList
[
subIndex
].
DateStr
,
IsUnionCked
:
0
,
blank
:
'y'
,
tab
:
"团控查询"
,
}
});
}
},
com_onresize
()
{
//clientHeight的值由DIV内容的实际高度和CSS中的padding值决定,
var
contentsHeight
=
document
.
body
.
clientHeight
;
var
h
=
contentsHeight
-
50
-
180
-
100
;
if
(
h
<
110
)
{
return
;
}
//设置table的行高
this
.
tableHeight
=
h
;
},
getList
()
{
this
.
loading
=
true
;
if
(
this
.
msg
.
StartDate
==
null
)
{
this
.
msg
.
StartDate
=
this
.
getBeforeDate
(
-
20
,
new
Date
().
Format
(
"yyyy-MM-dd"
));
}
if
(
this
.
msg
.
EndDate
==
null
)
{
this
.
msg
.
EndDate
=
this
.
getBeforeDate
(
-
30
,
this
.
getBeforeDate
(
-
20
,
new
Date
().
Format
(
"yyyy-MM-dd"
)));
}
this
.
apipost
(
"dict_post_HotelOffer_GetClientHotelStatics"
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
dataList
=
res
.
data
.
data
.
pageData
;
this
.
total
=
res
.
data
.
data
.
count
this
.
isShow
=
true
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
//获取酒店列表
GetHotelList
()
{
this
.
apipost
(
"hotel_post_GetHasStockHotelList"
,
{
QCountry
:
"651"
,
IsMoreThanZero
:
1
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
HotelList
=
res
.
data
.
data
;
}
},
err
=>
{}
);
},
setEdate
()
{
return
this
.
addMoth
(
new
Date
().
Format
(
"yyyy-MM-dd"
),
1
)
},
addMoth
(
d
,
m
)
{
let
ds
=
d
.
split
(
'-'
),
_d
=
ds
[
2
]
-
0
;
let
nextM
=
new
Date
(
ds
[
0
],
ds
[
1
]
-
1
+
m
+
1
,
0
);
let
max
=
nextM
.
getDate
();
d
=
new
Date
(
ds
[
0
],
ds
[
1
]
-
1
+
m
,
_d
>
max
?
max
:
_d
);
return
d
.
toLocaleDateString
().
match
(
/
\d
+/g
).
join
(
'-'
)
},
//格式化返回显示日期
getDateList
(
dateStr
)
{
var
str
=
dateStr
.
split
(
'-'
);
var
weekDay
=
[
"天"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
];
var
myDate
=
new
Date
(
Date
.
parse
(
dateStr
));
return
str
[
1
]
+
'/'
+
str
[
2
]
+
"("
+
weekDay
[
myDate
.
getDay
()]
+
")"
;
},
//获取星期几
getWeek
(
dateStr
)
{
var
weekDay
=
[
"天"
,
"一"
,
"二"
,
"三"
,
"四"
,
"五"
,
"六"
];
var
myDate
=
new
Date
(
Date
.
parse
(
dateStr
));
return
weekDay
[
myDate
.
getDay
()]
},
//获取颜色状态
getClass
(
Status
,
InventoryType
)
{
var
classStr
=
""
;
if
(
Status
==
0
)
{
classStr
=
'noKucun'
;
}
switch
(
InventoryType
)
{
case
1
:
classStr
=
"classHong"
;
break
;
case
2
:
classStr
=
"classWang"
;
break
;
case
3
:
classStr
=
"classPing"
;
break
;
case
4
:
classStr
=
"classDan"
;
break
;
case
5
:
classStr
=
"classTe"
;
break
;
case
6
:
classStr
=
"hotelQueryListclass6"
break
;
}
return
classStr
;
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
resetPageIndex
()
{
this
.
queryMsg
.
pageIndex
=
1
;
this
.
queryMsg
.
currentPage
=
1
;
},
//获取酒店列表
GetHotelTipList
()
{
this
.
apipost
(
"hoteltip_get_GetPageList"
,
this
.
queryMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
HotelTipList
=
res
.
data
.
data
.
pageData
;
this
.
queryMsg
.
total
=
res
.
data
.
data
.
count
;
}
},
err
=>
{}
);
},
SaveHotelTip
()
{
this
.
apipost
(
"hoteltip_post_SetHotelTip"
,
this
.
postMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
"保存成功!"
);
this
.
postMsg
.
Id
=
0
;
this
.
postMsg
.
TipContent
=
""
;
this
.
GetHotelTipList
();
}
else
{
this
.
Error
(
"保存失败!"
);
}
},
err
=>
{}
);
},
RemoveHotelTip
(
Id
)
{
var
that
=
this
;
this
.
Confirm
(
'是否要删除此数据?'
,
function
()
{
that
.
apipost
(
"hoteltip_post_RemoveHotelTip"
,
{
ID
:
Id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
that
.
Success
(
"删除成功!"
);
that
.
GetHotelTipList
();
}
else
{
that
.
Error
(
"删除失败!"
);
}
},
err
=>
{}
);
})
},
GetHotelTip
(
Id
)
{
this
.
apipost
(
"hoteltip_get_GetHotelTip"
,
{
ID
:
Id
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
postMsg
.
Id
=
res
.
data
.
data
.
Id
;
this
.
postMsg
.
TipContent
=
res
.
data
.
data
.
TipContent
;
}
else
{
this
.
Error
(
"获取数据失败!"
);
}
},
err
=>
{}
);
},
getProvinceList
(
ID
,
type
)
{
//根据省份获取城市
let
msg
=
{
Id
:
ID
};
if
(
type
==
1
)
{
this
.
msg
.
Province
=
0
;
this
.
msg
.
City
=
0
;
this
.
provinceList
=
[];
this
.
cityList
=
[];
}
else
if
(
type
==
2
)
{
this
.
msg
.
City
=
0
;
this
.
cityList
=
[];
}
this
.
apipost
(
"dict_post_Destination_GetChildList"
,
msg
,
res
=>
{
if
(
type
==
1
)
{
this
.
provinceList
=
res
.
data
.
data
;
}
else
if
(
type
==
2
)
{
this
.
cityList
=
res
.
data
.
data
;
}
},
err
=>
{}
);
},
getBranchList
()
{
let
UserInfo
=
this
.
getLocalStorage
();
this
.
apipost
(
'admin_get_BranchGetList'
,
{
RB_Group_Id
:
UserInfo
.
RB_Group_id
,
Status
:
0
,
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
companyList
=
res
.
data
.
data
;
}
},
err
=>
{})
},
//Excel下载
DownLoadHotelQuery
()
{
this
.
loading
=
true
;
let
qMsg
=
{
queryMsg
:
this
.
msg
,
uid
:
this
.
getLocalStorage
().
EmployeeId
};
let
fileName
=
"酒店查询统计"
+
this
.
$commonUtils
.
getCurrentDate
()
+
".xls"
;
this
.
GetLocalFile
(
"hotel_get_downloadHotelQuery"
,
qMsg
,
fileName
,
res
=>
{
this
.
loading
=
false
;
});
},
},
mounted
()
{
// 当前日期小于20天更新数据
let
oldCars
=
[]
let
newCars
=
[]
let
states
=
true
oldCars
=
JSON
.
parse
(
localStorage
.
getItem
(
"cars"
))
oldCars
.
forEach
(
item
=>
{
if
(
item
.
Date
<
this
.
getBeforeDate
(
-
20
,
new
Date
().
Format
(
"yyyy-MM-dd"
))){
states
=
false
}
else
{
newCars
.
push
(
item
)
}
})
if
(
!
states
){
this
.
HotelLength
=
newCars
.
length
localStorage
.
removeItem
(
"cars"
)
localStorage
.
setItem
(
"cars"
,
JSON
.
stringify
(
newCars
))
localStorage
.
removeItem
(
'HotelLength'
)
localStorage
.
setItem
(
'HotelLength'
,
JSON
.
stringify
(
this
.
HotelLength
))
}
this
.
HotelLength
=
localStorage
.
getItem
(
"HotelLength"
)?
localStorage
.
getItem
(
"HotelLength"
):
0
let
userinfo
=
this
.
getLocalStorage
();
let
ActionMenuCode
=
userinfo
.
ActionMenuCode
;
if
(
ActionMenuCode
.
indexOf
(
"HOTEL_memorandum"
)
!=
-
1
)
{
this
.
HOTEL_memorandum
=
true
;
}
this
.
initSupplier
();
this
.
getBranchList
();
this
.
getProvinceList
(
"651"
,
1
);
this
.
GetHotelList
();
this
.
getList
();
this
.
GetHotelTipList
();
this
.
com_onresize
();
window
.
onresize
=
()
=>
{
this
.
com_onresize
();
}
}
};
</
script
>
<
style
scoped
>
.Hq_duoge
{
cursor
:
pointer
;
text-decoration
:
underline
;
}
.HqCom_bottom
.ql-container
{
min-height
:
100px
;
}
.classHong
{
background-color
:
rgb
(
255
,
55
,
55
);
color
:
#fff
;
}
.classWang
{
background-color
:
rgb
(
255
,
153
,
204
);
}
.classPing
{
background-color
:
rgb
(
188
,
214
,
238
);
}
.classDan
{
background-color
:
rgb
(
221
,
221
,
221
);
}
.classTe
{
background-color
:
rgb
(
2
,
247
,
142
);
}
.hotelQueryListclass6
{
background-color
:
#808000
;
}
.HouseTypeList
{
background
:
#ccc
;
width
:
100%
;
margin-top
:
20px
;
}
.Com_hoteldiv
{
min-width
:
70px
;
white-space
:
nowrap
;
}
.noKucun
{
background-color
:
black
!important
;
}
.Hotel_kong
{
width
:
100%
;
height
:
35px
;
text-align
:
center
;
line-height
:
35px
;
border-bottom
:
1px
solid
#d1d1d1
;
}
.Hotel_kong
:last-child
{
border
:
0
;
}
.HouseTypeList
tr
th
{
background
:
#e6e6e6
;
height
:
35px
;
font-size
:
12px
;
color
:
#333
;
}
.HouseTypeList
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
35px
;
}
.HouseTypeList
tr
td
{
font-size
:
12px
;
}
.hotelProductManage2_tableBox
span
{
margin
:
0
10px
10px
0
;
}
.Hq_addDetail
{
margin-top
:
20px
;
}
.Hq_addDetail
.el-textarea__inner
{
resize
:
none
;
}
.Hq_addTable
.el-button.is-circle
{
padding
:
5px
;
}
.HqCom_bottom
.el-form-item
{
margin-bottom
:
0
}
.HqCom_bottom
{
height
:
350px
;
padding-top
:
35px
;
}
.HQ_miaoshu
{
color
:
#E95252
;
font-size
:
12px
;
}
.HQ_miaoshu
:first-child
{
margin-top
:
10px
;
}
.HotelQueryList
.has-gutter
tr
th
,
.el-table
th
.is-leaf
{
background
:
#EAEAEA
!important
;
}
.HotelQueryList
.el-table
td
,
.el-table
th
.is-leaf
{
border-bottom
:
1px
solid
#ebeef5
;
}
.HotelQueryList
.el-table
.cell
{
padding
:
0
;
}
.HotelQueryList
.el-table
td
{
padding
:
0
;
}
.CostPriceHover
{
height
:
100%
;
float
:
left
;
width
:
100%
;
cursor
:
pointer
;
}
.query-box
li
{
margin
:
0
0
10px
0
;
}
.query-box
li
span
>
em
{
min-width
:
58px
;
}
/
deep
/
.query-box
.option
.el-input
{
width
:
120px
!important
;
}
/
deep
/
.query-box
.HotelChooseArray
.el-input
{
width
:
120px
!important
;
}
/
deep
/
.query-box
.Star
.el-input
{
width
:
100px
!important
;
}
</
style
>
\ No newline at end of file
src/components/Hotel/singleProduct/components/OrderList.vue
0 → 100644
View file @
2cf143bf
<
style
scoped
>
.row
{
display
:
flex
;
}
.row-c
{
display
:
flex
;
align-items
:
center
;
}
.column
{
display
:
flex
;
flex-direction
:
column
;
}
.column-jac
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
}
.column-ac
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
}
.wrap
{
flex-wrap
:
wrap
;
}
.justify-sb
{
justify-content
:
space-between
;
}
.justify-c
{
justify-content
:
center
;
}
.justify-e
{
justify-content
:
flex-end
;
align-items
:
flex-end
;
}
.flex-g
{
flex-grow
:
1
;
}
.flex-s
{
flex-shrink
:
0
;
}
.align-c
{
align-items
:
center
;
}
.cblack
{
color
:
black
;
}
.cf
{
color
:
#ffffff
;
}
.c9e
{
color
:
#9e9e9e
;
}
.c20C997
{
color
:
#20c997
;
}
.c02C854
{
color
:
#02c854
;
}
.cff9800
{
color
:
#ff9800
;
}
.cF1416C
{
color
:
#f1416c
;
}
.cF57A98
{
color
:
#f57a98
;
}
.c04C8C8
{
color
:
#04c8c8
;
}
.c059FF6
{
color
:
#059ff6
;
}
.c3FC4FF
{
color
:
#3fc4ff
;
}
.fz10
{
font-size
:
10px
;
}
.fz11
{
font-size
:
11px
;
}
.fz12
{
font-size
:
12px
;
}
.fz13
{
font-size
:
13px
;
}
.fz14
{
font-size
:
14px
;
}
.fz15
{
font-size
:
15px
;
}
.fz16
{
font-size
:
16px
;
}
.fz17
{
font-size
:
17px
;
}
.fz18
{
font-size
:
18px
;
}
.fbold
{
font-weight
:
bold
;
}
.ml
{
margin-left
:
10px
;
}
.mr
{
margin-right
:
10px
;
}
.mt
{
margin-top
:
10px
;
}
.mt20
{
margin-top
:
20px
;
}
.mb
{
margin-bottom
:
10px
;
}
.mb20
{
margin-bottom
:
20px
;
}
.mx
{
margin-left
:
10px
;
margin-right
:
10px
;
}
.mx5
{
margin-left
:
5px
;
margin-right
:
5px
;
}
.mb5
{
margin-bottom
:
5px
;
}
.py
{
padding
:
15px
0
;
}
.py5
{
padding
:
5px
0
;
}
.px5
{
padding
:
0
5px
;
}
.px15
{
padding
:
0
15px
;
}
.pa15
{
padding
:
15px
;
}
.py20
{
padding
:
20px
0
;
}
.pb5
{
padding
:
0
0
5px
0
;
}
.pa
{
padding
:
10px
20px
;
}
.pa20
{
padding
:
20px
;
}
.pt20
{
padding
:
20px
0
;
}
.borderD
{
border-bottom
:
1px
dashed
#dddddd
;
}
.bgf
{
background
:
#ffffff
;
}
.bgf5
{
background
:
#f5f5f5
;
}
.bgE8F5E9
{
background
:
#e8f5e9
;
}
.bgD9F3FF
{
background
:
#d9f3ff
;
}
.bgFAEAED
{
background
:
#faeaed
;
}
.bj
{
background
:
#ffffff
;
}
.radius5
{
border-radius
:
5px
;
}
.cursor-pointer
{
cursor
:
pointer
;
}
.relative
{
position
:
relative
;
}
.absolute
{
position
:
absolute
;
}
.left0
{
left
:
0
;
}
.right0
{
right
:
0
;
}
.top0
{
top
:
0
;
}
.bottom0
{
bottom
:
0
;
}
.left20
{
left
:
020px
;
}
.right20
{
right
:
20px
;
}
.top20
{
top
:
20px
;
}
.bottom20
{
bottom
:
20px
;
}
.text-center
{
text-align
:
center
;
}
.orderType
{
padding
:
3px
15px
;
border-radius
:
3px
;
background
:
#f57a98
;
margin-right
:
15px
;
}
.orderType.active
{
background
:
#4dd0e1
;
}
.copy
{
display
:
inline-block
;
padding
:
3px
15px
;
border-radius
:
3px
;
margin-left
:
20px
;
}
.copy
:hover
{
background
:
#f5f5f5
;
}
.see-rec
div
{
padding
:
1px
5px
;
border-radius
:
3px
;
}
.see
{
border
:
1px
solid
#04c8c8
;
}
.seeLK
{
border
:
1px
solid
#059ff6
;
}
.see
:hover
{
background-color
:
rgba
(
4
,
200
,
200
,
0.1
);
}
.rec
{
border
:
1px
solid
#04c8c8
;
background-color
:
rgba
(
4
,
200
,
200
,
1
);
}
.rec
:hover
{
border
:
1px
solid
rgba
(
4
,
200
,
200
,
0.9
);
background-color
:
rgba
(
4
,
200
,
200
,
0.9
);
}
.cancel
:hover
{
background-color
:
#f3dce2
;
}
.confirm
:hover
{
background-color
:
#dcedc8
;
}
.change
:hover
{
background-color
:
#d7e9f3
;
}
.change1
:hover
{
background-color
:
#dcedc8
;
}
.orderop
{
text-align
:
center
;
}
.orderop
div
{
width
:
100px
;
height
:
50%
;
display
:
flex
;
justify-content
:
center
;
}
.RoomList
div
{
border-bottom
:
1px
solid
#e7e7e7
;
}
.RoomList
div
:last-child
{
border
:
0
;
}
.el-table
{
font-size
:
13px
;
}
.shezhifrom
{
position
:
relative
;
}
.shebox
{
position
:
absolute
;
top
:
0
;
left
:
-100px
;
display
:
none
;
}
.shezhifrom
:hover
.shebox
{
display
:
block
;
}
</
style
>
<
template
>
<div>
<div
v-for=
"(item, index) in OrderList"
class=
"column bgf radius5 px15 mb20"
>
<div
class=
"row-c justify-sb align-c py"
>
<div
class=
"row-c"
>
<div>
<div
class=
"orderType cf fz12"
:class=
"
{ active: item.OrderType == 1 }"
>
{{
item
.
OrderType
==
1
?
"散拼订房"
:
"团队订房"
}}
</div>
</div>
<div
class=
"c9e fz12"
>
<span>
订单编号:
</span>
<span>
{{
item
.
OrderNo
}}
</span>
<span
class=
"copy cblack cursor-pointer"
v-if=
"copyId != item.OrderId"
@
click=
"CopyHandler(item)"
>
复制
</span
>
<span
class=
"copy c059FF6 bgD9F3FF cursor-pointer"
v-else
><i
class=
"el-icon-check mr"
></i>
已复制
</span
>
</div>
</div>
<div
class=
"c9e fz12"
>
<span
v-if=
"item.OrderType == 1"
>
联系人信息:
{{
item
.
ContactName
}}
/
{{
item
.
ContactNumber
}}
</span
>
<span
v-else
>
组团号:
{{
item
.
TCNum
}}
</span>
</div>
<div
class=
"row c9e fz12"
>
<span>
销售:
</span>
<span
class=
"mr"
>
{{
item
.
SaleName
}}
</span>
<span
class=
"mr"
>
创建人:
</span>
<span
class=
"mr"
>
{{
item
.
CustomerName
}}
(
{{
item
.
CustomerContact
}}
/
{{
item
.
CustomerTel
}}
)
</span
>
<span>
下单时间:
</span>
<span
class=
"mr"
>
{{
item
.
CreateTime
}}
</span>
<div
class=
""
>
<i
class=
"mx5"
:class=
"
{
'el-icon-alarm-clock c20C997': item.OrderStatus == 1,
'el-icon-check cblack': item.OrderStatus == 2,
'el-icon-warning cff9800': item.OrderStatus == 3,
'el-icon-refresh cF1416C': item.OrderStatus == 4
}"
>
</i>
<span
class=
"fz12 cblack"
:class=
"
{
c20C997: item.OrderStatus == 1,
cblack: item.OrderStatus == 2,
cff9800: item.OrderStatus == 3,
cF1416C: item.OrderStatus == 4
}"
>
{{
item
.
OrderStatusName
}}
</span>
</div>
</div>
</div>
<div
class=
"mb"
>
<el-table
:data=
"item.DetailList"
style=
"width:100%"
border
>
<el-table-column
label=
"入住日期"
min-width=
"100"
style=
"background:#EAEAEA"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
Date
}}
</
template
>
</el-table-column>
<el-table-column
label=
"酒店名称"
style=
"background:#EAEAEA"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
HotelName
}}
</
template
>
</el-table-column>
<el-table-column
min-width=
"240"
>
<
template
slot=
"header"
slot-scope=
"scope"
>
<span>
入驻信息
</span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"按照入住人数*房型单价=房型总价小计(不含稅)"
placement=
"bottom"
>
<i
class=
"el-icon-question c059FF6 cursor-pointer"
></i>
</el-tooltip>
</
template
>
<
template
slot-scope=
"scope"
>
<div
class=
"RoomList"
>
<div
class=
"fz12 c9e"
v-for=
"(x, i) in scope.row.RoomList"
>
<span
class=
"mr"
>
{{
x
.
RoomTypeName
}}
:
{{
x
.
Number
}}
人间
</span
>
<span
class=
"ml mr"
>
人数:
{{
x
.
PeopleNumber
}}
人
</span>
<span
class=
"ml mr"
>
单价:
{{
x
.
Unit_Price
}}
</span>
<span
class=
"ml"
>
小计:
{{
x
.
Money
}}
{{
scope
.
row
.
CurrencyName
}}
</span
>
</div>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"订房号"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"!scope.row.ReserveRoomNo"
class=
"radius5 bgFAEAED cF1416C px5 fz12"
>
未确认
</span
>
<template
v-else
>
<span
class=
"radius5 bgE8F5E9 c20C997 px5 fz12"
>
{{
scope
.
row
.
ReserveRoomNo
}}
</span>
</
template
>
</template>
</el-table-column>
<el-table-column
label=
"城市税"
min-width=
"60"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
Tax
>
0
?
scope
.
row
.
Tax
.
toFixed
(
2
)
:
"-"
}}
</
template
>
</el-table-column>
<el-table-column
label=
"入汤税"
min-width=
"60"
style=
"background:#EAEAEA"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
Tax2
>
0
?
scope
.
row
.
Tax2
.
toFixed
(
2
)
:
"-"
}}
</
template
>
</el-table-column>
<el-table-column
label=
"小计"
min-width=
"70"
style=
"background:#EAEAEA"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
HotelMoeny
.
toFixed
(
2
)
}}
</
template
>
</el-table-column>
<el-table-column
label=
"付款方式"
min-width=
"80"
style=
"background:#EAEAEA"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
CustomerPayType
==
1
?
"到店自付"
:
"出发前付款"
}}
</
template
>
</el-table-column>
<el-table-column
label=
"手配費"
min-width=
"80"
style=
"background:#EAEAEA"
>
<
template
slot-scope=
"scope"
>
{{
item
.
HandFittingFee
?
item
.
HandFittingFee
:
"-"
}}
</
template
>
</el-table-column>
<
template
v-slot:append
v-if=
"item.Remark"
>
<div
style=
"padding:10px;color:#f1416c"
>
客户备注:
{{
item
.
Remark
}}
</div>
</
template
>
</el-table>
</div>
<el-table
:data=
"item.list"
style=
"width:100%"
border
v-if=
"item.OrderStatus!=3"
>
<el-table-column
label=
"实收"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
Income
?
scope
.
row
.
Income
:
"-"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"成本"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
CostMoney
?
scope
.
row
.
CostMoney
:
"-"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"平台税金"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
PlatformTax
?
scope
.
row
.
PlatformTax
:
"-"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"退款"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
Refund
?
scope
.
row
.
Refund
:
"-"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"手配费应收"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
HandFittingIncome
?
scope
.
row
.
HandFittingIncome
:
"-"
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"手配费平台税金"
min-width=
"100"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
HandFittingTax
?
scope
.
row
.
HandFittingTax
:
"-"
}}
</span>
</
template
>
</el-table-column>
</el-table>
<div
class=
"row justify-sb mt mb20"
v-if=
"item.OrderStatus!=3"
>
<div
class=
"row pt20"
v-if=
"item.GuestFileList.length > 0"
>
<!-- <i class="el-icon-warning cF57A98 fz15 mr"></i> -->
<div
class=
"column"
>
<!-- <div class="wrap fz12 c9e">
出发前收款酒店,请您于
<span class="cff9800">{{item.PaymentDate}}</span>
前支付定金,并且于
<span class="cF1416C">{{item.FinalPaymentDate}}</span>
日前支付尾款
</div> -->
<div
class=
"wrap fz12 c9e"
>
旅客名单
</div>
<div
class=
"row fz12 see-rec mt"
>
<div
class=
"text-accent q-mr-md c"
>
{{ item.GuestFileList[0].split("/").at(-1) }}
</div>
<div
class=
"cursor-pointer ml mr rec cf"
>
<a
class=
"cf"
style=
"text-decoration:none"
:href=
"item.GuestFileList[0]"
>
下载
</a
>
</div>
<!-- <div class="cursor-pointer see c04C8C8">查看支付方式</div>
<div class="cursor-pointer ml rec cf">提交付费凭证</div> -->
</div>
<!-- <template v-if="item.CustomerPayType==1 || item.CustomerPayType==3">
<div class="fz12 mt c9e">
到店自付酒店,需要您于
<span class="cff9800">{{item.UploadGuestDate}}</span>
</div>
<div class="row fz12 see-rec mt">
<div class="cursor-pointer seeLK c059FF6">上车旅客名单</div>
</div>
</template> -->
</div>
</div>
<div
class=
"column px15 bgf5 radius5 flex-g pa relative"
>
<div
class=
"fz12"
>
收款单据
</div>
<div
class=
"row wrap orderNo fz12 py c3FC4FF"
>
<span
class=
"cursor-pointer radius5 bgD9F3FF mr px5"
v-for=
"(x, i) in item.IncomeList"
@
click=
"openDetails(x)"
>
{{ x.FrID }}
</span
>
<span
v-if=
"item.IncomeList&&item.IncomeList.length == 0"
class=
"c9e fz12"
>
暂无收款单据
</span>
</div>
<el-tooltip
v-if=
"item.OrderStatus == 2"
class=
"item"
effect=
"dark"
content=
"制单"
placement=
"top"
>
<i
class=
"absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(item, index, 1)"
></i>
</el-tooltip>
</div>
<div
class=
"column px15 bgf5 radius5 ml flex-g pa relative"
>
<div
class=
"fz12"
>
退款单据
</div>
<div
class=
"row wrap orderNo fz12 py c3FC4FF"
>
<span
class=
"cursor-pointer radius5 bgD9F3FF mr px5"
v-for=
"(x, i) in item.RefundList"
@
click=
"openDetails(x)"
>
{{ x.FrID }}
</span
>
<span
v-if=
"item.RefundList&&item.RefundList.length == 0"
class=
"c9e fz12"
>
暂无退款单据
</span>
</div>
<el-tooltip
v-if=
"item.OrderStatus == 2"
class=
"item"
effect=
"dark"
content=
"制单"
placement=
"top"
>
<i
class=
"absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(item, index, 2)"
></i>
</el-tooltip>
</div>
<div
class=
"column px15 bgf5 radius5 ml flex-g pa relative"
>
<div
class=
"fz12"
>
成本单据
</div>
<div
class=
"row wrap orderNo fz12 py c3FC4FF"
>
<span
class=
"cursor-pointer radius5 bgD9F3FF mr px5"
v-for=
"(x, i) in item.CostList"
@
click=
"openDetails(x)"
>
{{ x.FrID }}
</span
>
<span
v-if=
"item.CostList&&item.CostList.length == 0"
class=
"c9e fz12"
>
暂无成本单据
</span>
</div>
<el-tooltip
v-if=
"item.OrderStatus == 2"
class=
"item"
effect=
"dark"
content=
"制单"
placement=
"top"
>
<i
class=
"absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(item, index, 2)"
></i>
</el-tooltip>
</div>
<div
class=
"column px15 bgf5 radius5 ml flex-g pa relative"
>
<div
class=
"fz12"
>
手配费单据
</div>
<div
class=
"row wrap orderNo fz12 py c3FC4FF"
>
<span
class=
"cursor-pointer radius5 bgD9F3FF mr px5"
v-for=
"(x, i) in item.HandFittingFinanceList"
@
click=
"openDetails(x)"
>
{{ x.FrID }}
</span
>
<span
v-if=
"item.HandFittingFinanceList&&item.HandFittingFinanceList.length == 0"
class=
"c9e fz12"
>
暂无手配费单据
</span>
</div>
<el-tooltip
v-if=
"item.OrderStatus == 2"
class=
"item"
effect=
"dark"
content=
"制单"
placement=
"top"
>
<i
class=
"absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(item, index, 1, 'Hand')"
></i>
</el-tooltip>
</div>
<div
class=
"column justify-c px15 bgf5 radius5 ml flex-g pa20"
>
<div
class=
"row-c justify-sb borderD pb5"
>
<span
class=
"fz12 c9e"
>
订单总金额
</span>
<div
class=
"ml"
>
<span
class=
"fz12 ml"
>
¥
</span>
<span
class=
"fz15 fbold"
>
{{ item.Money.toFixed(2) }}
</span>
<span
class=
"fz15"
>
{{ item.CurrencyName }}
</span>
</div>
</div>
<div
class=
"row-c justify-sb borderD py5"
v-if=
"item.CustomerPayType == 1 || item.CustomerPayType == 3"
>
<span
class=
"fz12 c9e"
>
到店自付
</span>
<div
class=
"ml"
>
<span
class=
"fz10 ml"
>
¥
</span>
<span
class=
"fz14"
>
{{ item.SelfPayMoney.toFixed(2) }}
</span>
<span
class=
"fz14"
>
{{ item.CurrencyName }}
</span>
</div>
</div>
<div
class=
"row-c justify-sb py5"
v-if=
"item.CustomerPayType == 2 || item.CustomerPayType == 3"
>
<span
class=
"fz12 c9e"
>
出发前付款
</span>
<div
class=
"ml"
>
<span
class=
"fz10 ml"
>
¥
</span>
<span
class=
"fz14"
>
{{ item.BeforeMoney.toFixed(2) }}
</span>
<span
class=
"fz14"
>
{{ item.CurrencyName }}
</span>
</div>
</div>
</div>
<div
v-if=
"item.OrderStatus > 3 || item.OrderStatus < 3"
class=
"column justify-c px15 bgE8F5E9 radius5 ml fz12 orderop pa20 flex-s"
>
<div
v-if=
"
item.OrderStatus == 1 &&
item.IncomeList&&item.IncomeList.length == 0 &&
item.RefundList&&item.RefundList.length == 0 &&
item.CostList&&item.CostList.length == 0 &&
item.HandFittingFinanceList&&item.HandFittingFinanceList.length == 0
"
class=
"row-c cursor-pointer radius5 cancel py5"
@
click=
"clickRightButtom(item, 0)"
>
<i
v-loading=
"loading0"
></i>
<span
class=
"cF1416C"
>
取消订单
</span>
</div>
<div
v-if=
"item.OrderStatus == 1"
class=
"row-c cursor-pointer radius5 confirm py5"
@
click=
"clickRightButtom(item, 1)"
>
<i
v-loading=
"loading1"
></i>
<span
class=
"c20C997"
>
确认订单
</span>
</div>
<div
v-if=
"item.OrderStatus == 2 || item.OrderStatus == 4"
class=
"row-c cursor-pointer radius5 change py5"
@
click=
"goRoomDetails(item, '订房详情')"
>
<span
class=
"c059FF6"
>
明细/编辑
</span>
</div>
<div
v-if=
"item.OrderStatus == 2"
class=
"row-c cursor-pointer radius5 change1 py5"
@
click=
"clickRightButtom(item, 2)"
>
<i
v-loading=
"loading2"
></i>
<span
class=
"c20C997"
>
收损
</span>
</div>
</div>
<!-- <div v-if="item.OrderStatus==2" class="column-jac px15 bgE8F5E9 radius5 ml fz12 pa20 flex-s c20C997">
<div class="mb5">已支付</div>
<div>
<span class="fbold fz14">{{item.Income}}</span>
<span>{{item.CurrencyName}}</span>
</div>
<div v-if="item.OrderStatus==2" class="orderop">
<div class="row-c cursor-pointer radius5 change mt mb" @click="goRoomDetails(item,'订房详情')">
<span class="c059FF6">明细/编辑</span>
</div>
</div>
</div> -->
</div>
<div
class=
"mt mb20 bgf5 pa15 row-c"
v-if=
"item.CancelRemark"
>
<div
style=
"font-size:16px;font-weight:bold;font-family: pingfangR;"
>
取消理由:
</div>
<div
style=
"margin-left:12px;font-size:12px;color: grey; font-family: microsoft yahei;"
>
{{item.CancelRemark}}
</div>
<div
style=
"margin-left:12px;font-size:12px;font-family: microsoft yahei;"
>
{{item.CancelEmpName}} {{item.CancelTime}}
</div>
</div>
</div>
<el-dialog
custom-class=
"w400"
title=
"修改收损金额"
:visible
.
sync=
"outerVisible"
>
<div
class=
"MyCustomerDetailbottomLayer ownScrollbarStyle"
style=
"height:150px;"
>
<el-form
label-width=
"80px"
:model=
"msg"
:rules=
"rules"
ref=
"msg"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"20"
>
<el-form-item
label=
"收损金额"
prop=
"LossMoney"
>
<el-input-number
class=
"w200"
v-model=
"msg.LossMoney"
:min=
"0"
:max=
"10000000"
></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
style=
"margin-top: 20px;"
>
<el-col
:span=
"24"
style=
"text-align: right;"
>
<input
type=
"button"
class=
"normalBtn"
value=
"保存"
@
click=
"submitForm('msg')"
/>
<input
type=
"button"
class=
"hollowFixedBtn"
value=
"取消"
@
click=
"(outerVisible = false), $refs[msg].resetFields()"
/>
</el-col>
</el-row>
</el-form>
</div>
</el-dialog>
<el-dialog
custom-class=
"w600"
title=
"取消订单"
:visible
.
sync=
"cancelOrderDialog"
>
<div
style=
"padding-bottom:20px"
>
<el-input
type=
"textarea"
autofocus
rows=
"5"
placeholder=
"请填写取消订单的缘由"
clear=
"w300"
v-model=
"cancelRemark"
></el-input>
<el-row
:gutter=
"20"
style=
"margin-top: 20px;"
>
<el-col
:span=
"24"
style=
"text-align: right;"
>
<input
type=
"button"
class=
"normalBtn"
value=
"取消订单"
@
click=
"cancelOrderHandler"
/>
<input
type=
"button"
class=
"hollowFixedBtn"
value=
"关闭"
@
click=
"cancelOrderDialog = false"
/>
</el-col>
</el-row>
</div>
</el-dialog>
<!-- <div class="shezhi column">
<el-input v-model="msg.LossMoney":placeholder="$t('pub.pleaseImport')"></el-input>
<div>
<button type="button" class="normalBtn" @click="saveVisa(item)">{{$t('pub.saveBtn')}}</button>
</div>
</div> -->
</div>
</template>
<
script
>
export
default
{
props
:
[
"OrderList"
],
data
()
{
return
{
copyId
:
0
,
loading0
:
false
,
loading1
:
false
,
loading2
:
false
,
BillMakingMsg
:
{
// PeroidsId: null,
// Type: null,
// EmpIds:'',
OtherType
:
61
,
ReFinanceId
:
""
,
ReFinanceId2
:
""
},
userInfo
:
{},
msg
:
{
OrderId
:
""
,
LossMoney
:
0
},
outerVisible
:
false
,
rules
:
{
LossMoney
:
[
{
required
:
true
,
message
:
"请输入收损金额"
,
trigger
:
"blur"
}
]
},
cancelOrderDialog
:
false
,
cancelRemark
:
""
,
cancelOrderId
:
0
};
},
methods
:
{
// 单据详情
openDetails
(
item
)
{
let
query
=
{
id
:
item
.
FrID
};
this
.
$router
.
push
({
path
:
"/FinancialDocumentsDetail"
,
query
});
},
// 制作单据
makeAdocument
(
row
,
index
,
num
,
name
)
{
this
.
BillMakingMsg
.
ReFinanceId
=
row
.
OrderId
;
this
.
BillMakingMsg
.
ReFinanceId2
=
num
;
if
(
name
==
"Hand"
)
{
this
.
BillMakingMsg
.
OtherType
=
62
;
}
else
{
this
.
BillMakingMsg
.
OtherType
=
61
;
}
let
text
=
""
;
let
query
=
{};
if
(
num
==
1
)
{
text
=
"收款"
;
}
else
if
(
num
==
2
)
{
text
=
"付款"
;
}
query
=
{
blank
:
"y"
,
tab
:
`新增
${
text
}
单据`
,
Type
:
num
,
tradeObj
:
JSON
.
stringify
(
this
.
BillMakingMsg
)
};
this
.
$store
.
commit
(
"ChoiceAddFinancialDocuments"
);
this
.
$router
.
push
({
path
:
"/ChoiceAddFinancialDocuments"
,
query
});
},
// 订单明细
goRoomDetails
(
obj
,
title
)
{
var
path
=
"roomReservationsDetails"
;
if
(
this
.
userInfo
.
RB_Group_id
==
91
)
{
path
=
"roomReservationsDetails_swt"
;
}
this
.
$router
.
push
({
name
:
path
,
query
:
{
id
:
obj
.
OrderId
,
OrderType
:
1
,
blank
:
"y"
,
tab
:
title
}
});
},
clickRightButtom
(
item
,
type
)
{
// 0取消订单 1确认订单
if
(
type
==
0
)
{
if
(
!
this
.
loading0
)
{
this
.
cancelOrderDialog
=
true
;
this
.
cancelOrderId
=
item
.
OrderId
}
}
else
if
(
type
==
1
)
{
if
(
!
this
.
loading1
)
{
this
.
confirmFun
(
item
);
}
}
else
if
(
type
==
2
)
{
if
(
!
this
.
loading2
)
{
this
.
outerVisible
=
true
;
this
.
msg
.
OrderId
=
item
.
OrderId
;
this
.
msg
.
LossMoney
=
item
.
LossMoney
?
item
.
LossMoney
:
0
;
}
}
},
//提交
submitForm
(
msg
)
{
//提交创建、修改表单
this
.
$refs
[
msg
].
validate
(
valid
=>
{
if
(
valid
)
{
if
(
!
this
.
loading2
)
{
this
.
saveUpdate
();
}
}
else
{
// this.Error("请完成必填项");
return
false
;
}
});
},
cancelOrderHandler
()
{
if
(
this
.
cancelRemark
==
""
)
{
this
.
Error
(
"请填写取消订单的缘由"
);
return
;
}
if
(
this
.
loading0
)
return
;
this
.
loading0
=
true
this
.
apipost
(
"dict_post_CancelAdminCustomerOrder"
,
{
OrderId
:
this
.
cancelOrderId
,
CancelRemark
:
this
.
cancelRemark
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
cancelOrderDialog
=
false
this
.
cancelOrderId
=
0
this
.
cancelRemark
=
''
this
.
$emit
(
"success"
);
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
this
.
loading0
=
false
;
},
err
=>
{
this
.
loading0
=
false
;
}
);
},
saveUpdate
()
{
this
.
$confirm
(
"是否确认设置收损?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
})
.
then
(()
=>
{
this
.
loading2
=
true
;
this
.
apipost
(
"dict_post_SetCustomerOrderLoss"
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
$emit
(
"success"
);
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
this
.
loading2
=
false
;
this
.
outerVisible
=
false
;
},
err
=>
{
(
this
.
loading2
=
false
),
(
this
.
outerVisible
=
false
);
}
);
})
.
catch
(()
=>
{});
},
confirmFun
(
item
)
{
this
.
$confirm
(
"是否确认订单?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
})
.
then
(()
=>
{
this
.
loading1
=
true
;
this
.
apipost
(
"dict_post_ConfirmAdminCustomerOrder"
,
{
OrderId
:
item
.
OrderId
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
$emit
(
"success"
);
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
this
.
loading1
=
false
;
},
err
=>
{
this
.
loading1
=
false
;
}
);
})
.
catch
(()
=>
{
this
.
$message
.
info
(
"已取消!"
);
});
},
//复制信息
CopyHandler
(
item
)
{
this
.
copyId
=
item
.
OrderId
;
setTimeout
(()
=>
{
this
.
copyId
=
0
;
},
2000
);
},
setEdate
()
{
return
this
.
addMoth
(
new
Date
().
Format
(
"yyyy-MM-dd"
),
1
);
},
addMoth
(
d
,
m
)
{
let
ds
=
d
.
split
(
"-"
),
_d
=
ds
[
2
]
-
0
;
let
nextM
=
new
Date
(
ds
[
0
],
ds
[
1
]
-
1
+
m
+
1
,
0
);
let
max
=
nextM
.
getDate
();
d
=
new
Date
(
ds
[
0
],
ds
[
1
]
-
1
+
m
,
_d
>
max
?
max
:
_d
);
return
d
.
toLocaleDateString
()
.
match
(
/
\d
+/g
)
.
join
(
"-"
);
},
com_onresize
()
{
//clientHeight的值由DIV内容的实际高度和CSS中的padding值决定,
var
contentsHeight
=
document
.
body
.
clientHeight
;
var
h
=
contentsHeight
-
50
-
180
-
40
;
if
(
h
<
110
)
{
return
;
}
//设置table的行高
// this.tableHeight = h;
}
},
mounted
()
{
this
.
userInfo
=
this
.
getLocalStorage
();
//自适应高度调节
this
.
com_onresize
();
window
.
onresize
=
()
=>
{
this
.
com_onresize
();
};
}
};
</
script
>
<
style
></
style
>
src/components/SalesModule/MyCustomer.vue
View file @
2cf143bf
...
...
@@ -1011,13 +1011,14 @@
// this.$message.error('请输入LINE ID')
// return
// }
if
(
this
.
updateMsg
.
email
){
var
reg
=
/^
[
A-Za-z0-9
\u
4e00-
\u
9fa5
]
+@
[
a-zA-Z0-9_-
]
+
(\.[
a-zA-Z0-9_-
]
+
)
+$/
;
if
(
!
reg
.
test
(
this
.
updateMsg
.
email
)){
this
.
$message
.
error
(
'请输入有效的邮箱'
)
return
}
}
// if(this.updateMsg.email){
// var reg=/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
// if(!reg.test(this.updateMsg.email)){
// this.$message.error('请输入有效的邮箱')
// return
// }
// }
if
(
this
.
updateMsg
.
District
==
''
)
{
this
.
updateMsg
.
District
=
0
}
...
...
src/router/config.js
View file @
2cf143bf
...
...
@@ -963,7 +963,7 @@ export default {
name
:
'HotelOrderList'
,
component
:
resolve
=>
require
([
'@/components/Hotel/reservation/HotelOrderList'
],
resolve
),
meta
:
{
title
:
'预定订单'
title
:
'
酒店
预定订单'
},
},
{
...
...
@@ -974,6 +974,30 @@ export default {
title
:
'酒店检索'
},
},
{
path
:
'/singleProductHotelOrder'
,
//销售酒店预定订单
name
:
'singleProductHotelOrder'
,
component
:
resolve
=>
require
([
'@/components/Hotel/singleProduct/HotelOrder'
],
resolve
),
meta
:
{
title
:
'酒店预定订单'
},
},
{
path
:
'/singleProductHotelOrderOP'
,
//操作酒店预定订单
name
:
'singleProductHotelOrderOP'
,
component
:
resolve
=>
require
([
'@/components/Hotel/singleProduct/HotelOrderOP'
],
resolve
),
meta
:
{
title
:
'酒店预定订单'
},
},
{
path
:
'/singleProductModifyHotelOrder'
,
//酒店预定订单变更
name
:
'singleProductModifyHotelOrder'
,
component
:
resolve
=>
require
([
'@/components/Hotel/singleProduct/ModifyHotelOrder'
],
resolve
),
meta
:
{
title
:
'酒店预定变更'
},
},
{
path
:
'/RestauranOrder'
,
//餐厅订单信息
name
:
'RestauranOrder'
,
...
...
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