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
b59ed521
Commit
b59ed521
authored
Jul 10, 2024
by
youjie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/superman
parents
51bfaddb
92fa74c0
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
2823 additions
and
0 deletions
+2823
-0
douyinOrder.vue
src/components/SingleAirTicket/douyinOrder.vue
+448
-0
TravelPrice2 copy.vue
...newTravelmanager/TravelGroupControl/TravelPrice2 copy.vue
+2132
-0
douyinTips.vue
src/components/systemManagement/douyinTips.vue
+228
-0
config.js
src/router/config.js
+15
-0
No files found.
src/components/SingleAirTicket/douyinOrder.vue
0 → 100644
View file @
b59ed521
<
style
>
.page_iisMg
._nav
{
margin
:
20px
0
0
0
;
background-color
:
#f5f5f5
;
}
.page_iisMg
._nav
li
{
float
:
left
;
font-size
:
14px
;
color
:
#666666
;
padding
:
15px
20px
;
cursor
:
pointer
;
position
:
relative
;
background-color
:
#f1f1f1
;
margin-right
:
5px
;
}
.page_iisMg
._nav
li
._active
{
background-color
:
#ffffff
;
color
:
#333333
;
}
.page_iisMg
._nav
li
._active
::after
{
content
:
""
;
width
:
20px
;
height
:
3px
;
background-color
:
#e95252
;
display
:
inline-block
;
position
:
absolute
;
bottom
:
0
;
left
:
38%
;
}
.page_iisMg
.query-box
{
padding-bottom
:
0
;
}
.page_iisMg
.iis_info_box
{
padding-top
:
15px
;
}
.page_iisMg
.el-date-editor
.el-range-separator
{
width
:
9%
!important
;
}
.page_iisMg
td
span
.status_Application
{
color
:
#409EFF
;
}
.page_iisMg
td
span
.status_Cancle
{
color
:
#909399
;
}
.page_iisMg
td
span
.status_Passed
{
color
:
#67C23A
;
}
.page_iisMg
td
span
.status_Rejected
{
color
:
#F56C6C
;
}
.page_iisMg
td
span
.status_owe
{
color
:
#E6A23C
;
}
.page_iisMg
td
span
.status_Recover
{
color
:
#67C23A
;
}
.page_iisMg
.cursorpointer
{
text-decoration
:
underline
;
}
.page_iisMg
._icon_btn
i
{
width
:
30px
;
height
:
30px
;
display
:
inline-block
;
color
:
white
!important
;
border-radius
:
50%
;
text-align
:
center
;
line-height
:
30px
;
margin-right
:
10px
;
cursor
:
pointer
;
outline
:
none
;
}
.page_iisMg
._icon_btn
i
.icon-ico_commodity_defaul
{
background-color
:
#F16C3C
;}
.page_iisMg
._icon_btn
i
.icon-ico_commodity_defaul
:hover
{
background-color
:
#e87c54
}
.page_iisMg
._icon_btn
i
.icon-ico_commodity_defaul
:active
{
background-color
:
#f76630
}
.page_iisMg
._icon_btn
i
.icon-quxiao1
{
background-color
:
#E95252
;}
.page_iisMg
._icon_btn
i
.icon-quxiao1
:hover
{
background-color
:
#ea6d6d
}
.page_iisMg
._icon_btn
i
.icon-quxiao1
:active
{
background-color
:
#e42d2d
}
.page_iisMg
._icon_btn
i
.icon-sousuo
{
background-color
:
#47BF8C
;}
.page_iisMg
._icon_btn
i
.icon-sousuo
:hover
{
background-color
:
#66bb97
}
.page_iisMg
._icon_btn
i
.icon-sousuo
:active
{
background-color
:
#35ab79
}
._zhuihui
{
display
:
inline-block
;
height
:
30px
;
width
:
30px
;
border-radius
:
50%
;
color
:
white
;
background-color
:
#e42d2d
;
text-align
:
center
;
line-height
:
30px
;
cursor
:
pointer
;
margin-right
:
10px
}
._zhuihui.xiugai
{
background-color
:
#409EFF
;
}
.Shopping_bossdialog
._addUpload_box
{
display
:
initial
;
margin-top
:
20px
;
width
:
138px
!important
;
}
.Shopping_bossdialog
._addUpload_box
>
div
{
float
:
left
;
width
:
138px
;
height
:
92px
;
border-radius
:
2px
;
cursor
:
pointer
;
padding
:
5px
;
margin
:
0
10px
10px
0
;
position
:
relative
;
}
.Shopping_bossdialog
._addUpload_box
.icon-guanbi1
{
font-size
:
12px
;
color
:
white
;
display
:
inline-block
;
margin-left
:
15px
;
position
:
absolute
;
right
:
-6px
;
top
:
-9px
;
background-color
:
#f56c6c
;
border-radius
:
50%
;
height
:
20px
;
width
:
20px
;
text-align
:
center
;
line-height
:
20px
;
}
.Shopping_bossdialog
._addUpload_box
.icon-guanbi1
:hover
{
font-size
:
12px
;
color
:
#c94052
;
}
.Shopping_bossdialog
._pic_upload
.el-upload-dragger
{
width
:
100px
!important
;
height
:
50px
!important
;
}
.PQ_detail
{
width
:
100%
;
border-collapse
:
collapse
;
}
.PQ_detail
tr
th
,
.v-table-title-cell
{
background
:
#e6e6e6
;
height
:
40px
;
font-size
:
14px
;
border-right
:
1px
solid
#e6e6e6
;
color
:
#333
;
}
.PQ_detail
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
40px
;
}
.PQ_detail
tr
td
{
font-size
:
12px
;
border
:
1px
solid
#e5e5e5
;
}
</
style
>
<
template
>
<div
class=
"page_iisMg"
>
<div
class=
"query-box"
>
<div
@
keyup
.
enter=
"resetPageIndex()"
>
<el-form
class=
"iis_info_box clearfix"
label-width=
"110px"
>
<el-row>
<el-col
:span=
"4"
:gutter=
"35"
>
<el-form-item
label=
"关键字"
>
<el-input
placeholder=
"请输入订单编号/商品名称"
v-model=
"msg.order_id"
></el-input>
</el-form-item>
</el-col>
<el-col
:span=
"8"
:gutter=
"35"
>
<el-form-item
label=
"支付日期"
>
<el-date-picker
class=
"h34"
@
change=
"timeAdd"
v-model=
"productionDate"
type=
"daterange"
value-format=
"yyyy-MM-dd"
:range-separator=
"$t('restaurant.res_To')"
></el-date-picker>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<ul>
<li>
<button
class=
"hollowFixedBtn"
@
click=
"resetPageIndex()"
>
{{
$t
(
'pub.searchBtn'
)
}}
</button>
</li>
</ul>
</div>
<table
class=
"singeRowTable"
style=
"border:1px solid #E6E6E6;"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<th>
商品名称
</th>
<th
width=
"180"
>
联系电话
</th>
<th>
订单类型
</th>
<th>
原始金额
</th>
<th>
支付金额
</th>
<th>
订单实收
</th>
<th>
支付时间
</th>
<th>
订单状态
</th>
<th>
标记信息
</th>
<!--
<th>
发票附件
</th>
-->
<th>
{{
$t
(
'system.table_operation'
)
}}
</th>
</tr>
<template
v-for=
"(item, index) in dataList"
v-loading=
"loading"
>
<tr>
<!-- class="cursorpointer" -->
<td>
{{
item
.
sku_name
}}
</td>
<td>
{{
item
.
contacts_phone
}}
</td>
<!-- 订单类型(订单类型,21-团购,31-预售,41、90-外卖,51、70-次卡,60-券交易) -->
<td
>
<span
v-if=
"item.order_type==21"
>
团购
</span>
<span
v-else-if=
"item.order_type==31"
>
预售
</span>
<span
v-else-if=
"item.order_type==41||tem.order_type==90"
>
外卖
</span>
<span
v-else-if=
"item.order_type==51||tem.order_type==70"
>
次卡
</span>
<span
v-else-if=
"item.order_type==60"
>
券交易
</span>
<span
v-else
></span>
</td>
<td
>
{{
item
.
original_amount
|
priceFormat
(
item
.
original_amount
)
}}
</td>
<td
>
{{
item
.
pay_amount
|
priceFormat
(
item
.
pay_amount
)
}}
</td>
<td
>
{{
item
.
receipt_amount
|
priceFormat
(
item
.
receipt_amount
)
}}
</td>
<td>
{{
item
.
pay_time
}}
</td>
<td><span
v-if=
"item.order_status==100"
>
待支付
</span>
<span
v-else-if=
"item.order_status==101"
>
支付取消
</span>
<span
v-else-if=
"item.order_status==200"
>
已支付
</span>
<span
v-else-if=
"item.order_status==201"
>
待使用
</span>
<span
v-else-if=
"item.order_status==1"
>
已完成
</span>
<span
v-else
></span></td>
<td>
<el-popover
width=
"630"
trigger=
"click"
>
<table
class=
"PQ_detail"
>
<tr
v-if=
"item.OperateContent&&item.OperateContent.length>0"
v-for=
"(itemo, indexo) in item.OperateContent"
v-loading=
"loading"
>
<td
>
{{
itemo
.
Name
}}
</td>
<td>
{{
itemo
.
Content
}}
</td>
</tr>
</table>
<span
slot=
"reference"
class=
"price"
style=
"text-decoration: underline;cursor: pointer;"
>
{{
item
.
UpdateByName
}}{{
item
.
UpdateBy
>
0
?
"/"
:
""
}}{{
item
.
UpdateDate
}}
</span>
</el-popover>
</td>
<td
class=
"_icon_btn"
style=
"text-align: left;padding-left: 20px"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"标记订单信息"
placement=
"top"
>
<i
class=
"iconfont icon-ico_commodity_defaul"
@
click=
"setStatus(item, 1)"
></i>
</el-tooltip>
</td>
</tr>
</
template
>
</table>
<div
class=
"noDataNotice"
v-if=
"dataList.length<1"
><i
class=
"iconfont icon-kong"
></i>
<p>
没有找到你需要的数据
</p></div>
<div
v-if=
"dataList.length>0"
>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
'msg.pageSize'
:total=
'total'
>
</el-pagination>
</div>
<el-dialog
custom-class=
"w500"
title=
"标记订单信息"
:visible
.
sync=
"isShowStatus"
>
<div
style=
"padding-bottom:20px"
>
<el-form
label-width=
"120px"
>
<el-row>
<el-col
:span=
"24"
:gutter=
"35"
v-if=
"UpdateApply.OperateContentList&&UpdateApply.OperateContentList.length>0"
:key=
"indexo"
v-for=
"(itemo, indexo) in UpdateApply.OperateContentList"
v-loading=
"loading"
>
<el-form-item
:label=
"itemo.Name"
>
<el-input
v-model=
"itemo.Content"
style=
"width:90%;"
></el-input>
<span
class=
"iconfont icon-guanbi1"
style=
"margin-left:10px;color:#33B3FF;font-size:10px;cursor: pointer;"
@
click=
"deleteUploadFile(indexo)"
></span>
</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=
"updateStatus()"
/>
<input
type=
"button"
class=
"hollowFixedBtn"
:value=
"$t('pub.closeSel')"
@
click=
"isShowStatus = false,UpdateApply.Id=0,UpdateApply.OperateContentList=[]"
/>
</el-col>
</el-row>
</el-form>
</div>
</el-dialog>
</div>
</template>
<
script
>
export
default
{
data
()
{
return
{
RB_Group_Id
:
''
,
msg
:
{
order_id
:
''
,
sDate
:
''
,
eDate
:
''
,
pageIndex
:
1
,
pageSize
:
10
,
},
productionDate
:
[],
dataList
:
[],
loading
:
false
,
isShowStatus
:
false
,
AllOperateContentList
:
[],
url
:
""
,
currentPage
:
0
,
total
:
0
,
UpdateApply
:{
OperateContentList
:[],
Id
:
0
,
},
};
},
filters
:
{
priceFormat
(
value
)
{
if
(
value
==
null
)
{
return
0.0
;
}
let
nStr
=
value
.
toFixed
(
2
);
nStr
+=
""
;
let
x
=
nStr
.
split
(
"."
);
let
x1
=
x
[
0
];
let
x2
=
x
.
length
>
1
?
"."
+
x
[
1
]
:
""
;
var
rgx
=
/
(\d
+
)(\d{3})
/
;
while
(
rgx
.
test
(
x1
))
{
x1
=
x1
.
replace
(
rgx
,
"$1"
+
","
+
"$2"
);
}
return
x1
+
x2
;
},
},
methods
:
{
deleteUploadFile
(
i
)
{
// 删除上传文件
this
.
UpdateApply
.
OperateContentList
.
splice
(
i
,
1
);
},
setStatus
:
function
(
item
,
type
)
{
this
.
UpdateApply
.
Id
=
item
.
Id
;
this
.
UpdateApply
.
OperateContentList
=
[];
if
(
item
.
OperateContent
&&
item
.
OperateContent
.
length
>
0
){
this
.
UpdateApply
.
OperateContentList
=
JSON
.
parse
(
JSON
.
stringify
(
item
.
OperateContent
));}
this
.
AllOperateContentList
.
forEach
(
item
=>
{
if
(
this
.
UpdateApply
.
OperateContentList
.
findIndex
(
item1
=>
item1
.
Name
===
item
.
Name
)
==-
1
){
this
.
UpdateApply
.
OperateContentList
.
push
({
Name
:
item
.
Name
,
Content
:
''
,
});
}
});
// }else{
// this.AllOperateContentList.forEach(item=> {
// this.UpdateApply.OperateContentList.push({
// Name:item.Name,
// Content:'',
// });
// })
// // this.OperateContent=JSON.parse(JSON.stringify(this.AllOperateContentList));
// }
this
.
isShowStatus
=
true
;
},
///更新发票状态
updateStatus
(){
// this.UpdateApply.OperateContentList=[];
// this.UpdateApply.OperateContentList=JSON.parse(JSON.stringify(this.OperateContent));
this
.
$confirm
(
"确认标记的订单信息正确"
,
this
.
$t
(
'tips.tips'
),
{
confirmButtonText
:
'确认'
,
cancelButtonText
:
this
.
$t
(
'pub.cancelBtn'
),
type
:
'warning'
}).
then
(()
=>
{
this
.
apipost
(
'douyin_post_SetDouYinMainOrder'
,
this
.
UpdateApply
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
UpdateApply
.
OperateContentList
=
[];
this
.
UpdateApply
.
Id
=
0
,
this
.
isShowStatus
=
false
;
this
.
getPageList
()
}
},
null
)
}).
catch
(()
=>
{
});
},
getAllOperateContentList
:
function
()
{
this
.
apipost
(
'dict_post_GetList'
,
{
Key
:
'DouYin_MainOrder'
},
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
AllOperateContentList
=
res
.
data
.
data
console
.
log
(
"this.AllOperateContentList"
,
this
.
AllOperateContentList
);
}
},
null
)
},
timeAdd
:
function
()
{
// 日期格式
if
(
!
this
.
productionDate
)
{
this
.
msg
.
sDate
=
""
;
this
.
msg
.
eDate
=
""
;
return
;
}
this
.
msg
.
sDate
=
this
.
productionDate
[
0
];
this
.
msg
.
eDate
=
this
.
productionDate
[
1
];
},
getPageList
:
function
()
{
this
.
loading
=
true
this
.
apipost
(
'douyin_post_GetPageList'
,
this
.
msg
,
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
total
=
res
.
data
.
data
.
count
;
this
.
dataList
=
res
.
data
.
data
.
pageData
}
},
null
)
},
handleCurrentChange
:
function
(
val
)
{
//翻页
this
.
msg
.
pageIndex
=
val
;
this
.
getPageList
();
},
resetPageIndex
:
function
(){
// 重置页码
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
this
.
getPageList
()
}
},
mounted
()
{
this
.
getAllOperateContentList
();
this
.
getPageList
();
}
};
</
script
>
src/components/newTravelmanager/TravelGroupControl/TravelPrice2 copy.vue
0 → 100644
View file @
b59ed521
<
style
>
@import
"../../../assets/css/newTravelManager.css"
;
.choosed
span
{
background-color
:
#1bc594
!important
;
}
.illegal
span
{
background-color
:
#c0ebd1
;
}
.TPLine
{
display
:
inline-block
;
width
:
510px
;
height
:
1px
;
border-bottom
:
1px
dashed
#bfbfbf
;
}
.TP_rightDate
{
margin-left
:
50px
;
}
.TPDateContent
.currentInput
{
background-color
:
transparent
;
}
.TP_tips
{
display
:
inline-block
;
padding
:
5px
;
border
:
1px
solid
#d1d1d1
;
position
:
relative
;
border-radius
:
4px
;
margin-right
:
10px
;
cursor
:
pointer
;
}
.TP_dateContent
{
width
:
600px
;
height
:
auto
;
margin
:
30px
0
0
120px
;
min-height
:
30px
;
position
:
relative
;
}
.TP_cancel
{
position
:
absolute
;
color
:
#e95252
;
display
:
inline-block
;
width
:
16px
;
background-color
:
#fff
;
border-radius
:
50%
;
height
:
16px
;
right
:
-8px
;
top
:
-11px
;
}
.TP_DateList
{
width
:
500px
;
margin
:
10px
0
0
120px
;
}
.ckedSpan
{
background-color
:
#2aa872
;
color
:
#fff
;
}
.TP_toLeft
{
position
:
absolute
;
top
:
20px
;
cursor
:
pointer
;
left
:
0
;
}
.TravelPrice
.days
.liList
{
cursor
:
pointer
;
}
.TP_childContent
{
position
:
absolute
;
left
:
20px
;
top
:
20px
;
}
.TP_Right
{
position
:
absolute
;
top
:
20px
;
cursor
:
pointer
;
right
:
0
;
}
.TP_Sendprepend
{
float
:
left
;
width
:
110px
;
height
:
34px
;
border
:
1px
solid
#dcdfe6
;
text-align
:
center
;
line-height
:
34px
;
background-color
:
#f5f7fa
;
color
:
#909399
;
font-size
:
14px
;
margin
:
3px
-11px
0
10px
;
}
.TravelPrice
.days
.checked1
{
border
:
1px
solid
#2aa872
!important
;
}
.TravelPrice
.days
.checked2
{
border
:
1px
solid
#e95252
!important
;
}
.TP_shangchuan
.el-form-item__label
{
width
:
auto
!important
;
margin-left
:
23px
;
}
.TravelPrice
.avatar-uploader
.el-upload
{
border
:
1px
dashed
#d9d9d9
;
border-radius
:
6px
;
cursor
:
pointer
;
position
:
relative
;
overflow
:
hidden
;
}
.TravelPrice
.avatar-uploader-icon
{
font-size
:
28px
;
color
:
#8c939d
;
width
:
148px
;
height
:
148px
;
line-height
:
148px
;
text-align
:
center
;
}
.TravelPrice
.avatar-uploader
.el-upload
:hover
{
border-color
:
#409eff
;
}
.TravelPrice
.avatar-uploader
img
{
width
:
148px
;
height
:
148px
;
display
:
block
;
}
.TravelPrice
.avatar-uploader
:hover
.TP_delImg
{
display
:
block
;
}
.TP_delImg
{
display
:
inline-block
;
width
:
32px
;
height
:
32px
;
position
:
absolute
;
z-index
:
999
;
top
:
60px
;
display
:
none
;
line-height
:
32px
;
border-radius
:
50%
;
left
:
60px
;
background-color
:
gray
;
}
.TP_delImg
:hover
{
color
:
#e95252
;
background
:
#fff
;
}
.TPright
.SaleBranchList
.el-input__inner
{
height
:
34px
!important
;
}
.TPSetInfo
.multiple_input
.el-input__inner
{
margin-top
:
3px
;
}
.SimulateDrop-box
{
width
:
288px
;
min-height
:
34px
;
position
:
relative
;
padding
:
5px
21px
5px
6px
;
float
:
left
;
margin
:
4px
0
0
10px
;
border
:
1px
solid
#d1d1d1
;
}
._TravelPricePopover
.jiDiv
{
width
:
750px
;
max-height
:
400px
;
overflow
:
auto
;
}
._TravelPricePopover
.ScenicDiv
{
width
:
450px
;
max-height
:
400px
;
overflow
:
auto
;
}
._TravelPricePopover
table
{
padding
:
10px
0
0
20px
;
background-color
:
#ededed
;
border-collapse
:
collapse
;
border
:
1px
solid
#d2d2d2
;
font-size
:
12px
;
margin
:
0
20px
5px
0
;
width
:
100%
;
}
._TravelPricePopover
table
._color_666
{
background-color
:
#ededed
;
color
:
#666666
;
padding
:
5px
;
}
._TravelPricePopover
table
td
{
background-color
:
#ffffff
;
padding
:
9px
0
;
color
:
#333333
;
text-align
:
center
;
border
:
1px
solid
#d2d2d2
;
}
._TravelPricePopover
table
td
._d_name
{
background-color
:
#ededed
;
}
.SimulaDrop
{
position
:
absolute
;
top
:
3px
;
right
:
10px
;
color
:
#c0c4cc
;
}
.SD_flight
{
display
:
inline-block
;
height
:
24px
;
margin
:
0
3px
3px
0
;
padding
:
0
8px
;
line-height
:
22px
;
background-color
:
#f0f2f5
;
}
.TP_flightBtn
{
float
:
right
;
margin-right
:
45px
;
}
.TC-config
{
color
:
#999999
;
font-size
:
12px
;
height
:
20px
;
line-height
:
20px
;
}
.TCSwitchtitle
{
display
:
inline-block
;
vertical-align
:
top
;
width
:
86px
;
text-align
:
right
;
margin-top
:
2px
;
color
:
#606266
;
}
.TCswitch
{
width
:
280px
;
}
.TP_Airticktid
{
text-decoration
:
underline
;
cursor
:
pointer
;
color
:
#409eff
;
}
.TP_noneed
{
position
:
relative
;
top
:
10px
;
margin
:
20px
0
30px
11px
;
}
.Tp_hotelDialog
{
width
:
900px
;
}
.TphotelTable
{
width
:
100%
;
margin
:
auto
;
text-align
:
center
;
font-size
:
12px
;
color
:
#333
;
border-collapse
:
collapse
;
background-color
:
#fff
;
border
:
1px
solid
#d1d1d1
;
}
.TphotelTable
th
{
background
:
#E6E6E6
;
padding
:
8px
0
;
color
:
#333
;
border
:
1px
solid
#d1d1d1
;
font-weight
:
bold
;
}
.TphotelTable
tr
td
{
background-color
:
#fff
;
border
:
1px
solid
#d1d1d1
;
}
.Tp_btn
{
color
:
#fff
;
height
:
25px
;
background
:
#E95252
;
border
:
1px
solid
#E95252
;
cursor
:
pointer
;
border-radius
:
15px
;
margin-left
:
10px
;
}
.tp_divList
{
width
:
100%
;
min-height
:
30px
;
border-bottom
:
1px
dashed
#ccc
;
}
.tp_divList
div
{
text-align
:
left
;
padding
:
0
20px
;
margin-top
:
5px
;
}
.tp_divList
:last-child
{
border
:
0
;
}
.disClick
{
background-color
:
#d1d1d1
;
color
:
#fff
;
border
:
1px
solid
#d1d1d1
;
cursor
:
default
;
}
.disClick
:hover
{
background-color
:
#d1d1d1
!important
;
cursor
:
default
!important
;
box-shadow
:
none
!important
;
}
.lessPriceRule
{
font-size
:
14px
;
margin-left
:
40px
;
text-decoration
:
underline
;
cursor
:
pointer
;
}
</
style
>
<
template
>
<div>
<div
class=
"TravelPrice clearfix"
:class=
"
{'foldHeight':isFold==1}">
<span
class=
"TMTitle"
>
<i></i>
{{
$t
(
'sm.tuanqishezhi'
)
}}
</span>
<span
class=
"foldList"
@
click=
"fold"
v-if=
"isFold==''"
>
{{
$t
(
'sm.djzd'
)
}}
</span>
<span
class=
"foldList"
@
click=
"fold"
v-if=
"isFold==1"
>
{{
$t
(
'sm.djzk'
)
}}
</span>
<div
class=
"TPLeft"
>
<div
class=
"Travel_Nav"
>
<span
class=
"Travel_TT"
>
{{
$t
(
'sm.xztuanqi'
)
}}
</span>
<span
class=
"Travel_Line"
></span>
</div>
<div
class=
"clearfix"
>
<div
class=
"TPDateContent"
id=
"DayAll"
>
<div
class=
"month"
>
<ul>
<li>
<i
class=
"arrow monthminus"
@
click=
"currentYear-=1,getDateString(),initCalendar(dateString)"
>
<
</i>
<input
type=
"text"
v-model=
"currentYear"
disabled
class=
"currentInput"
@
input=
"getDateString(),initCalendar(dateString)"
>
{{
$t
(
'pub.year'
)
}}
<i
class=
"arrow monthadd"
@
click=
"currentYear+=1,getDateString(),initCalendar(dateString)"
>
>
</i>
</li>
<li>
<i
class=
"arrow monthminus"
@
click=
"pickPre(currentYear,currentMonth)"
>
<
</i>
<input
type=
"text"
v-model=
"currentMonth"
disabled
class=
"currentInput"
@
input=
"getDateString(),initCalendar(dateString)"
>
{{
$t
(
'pub.month'
)
}}
<i
class=
"arrow monthadd"
@
click=
"pickNext(currentYear,currentMonth)"
>
>
</i>
</li>
</ul>
</div>
<!-- 星期 -->
<ul
class=
"weekdays"
>
<li>
{{
$t
(
'hotel.hotel_Monday'
)
}}
</li>
<li>
{{
$t
(
'hotel.hotel_Tuesday'
)
}}
</li>
<li>
{{
$t
(
'hotel.hotel_Wednesday'
)
}}
</li>
<li>
{{
$t
(
'hotel.hotel_Thursday'
)
}}
</li>
<li>
{{
$t
(
'hotel.hotel_Friday'
)
}}
</li>
<li>
{{
$t
(
'hotel.hotel_Saturday'
)
}}
</li>
<li>
{{
$t
(
'hotel.hotel_Sunday'
)
}}
</li>
</ul>
<!-- 日期 -->
<ul
class=
"days"
>
<li
class=
"liList"
v-for=
"(dayobject,index) in days"
:key=
"index+1000"
>
<span
v-if=
"dayobject.checkState==$calendarUtils.checkState.noChecked"
class=
"other-month"
>
{{
dayobject
.
day
.
getDate
()
}}
</span>
<!---->
<span
v-if=
"dayobject.checkState==$calendarUtils.checkState.checked"
class=
"checked1"
@
click=
"clickedDay(dayobject)"
>
{{
dayobject
.
day
.
getDate
()
}}
</span>
<!---->
<span
v-else-if=
"dayobject.checkState==$calendarUtils.checkState.hasValue"
@
click=
"clickedDay(dayobject)"
>
{{
dayobject
.
day
.
getDate
()
}}
</span>
</li>
</ul>
</div>
</div>
</div>
<div
class=
"TPright"
></div>
<div
class=
"TPCenter"
>
<div
class=
"TPNoDiv"
>
<span
class=
"Travel_TT"
>
{{
$t
(
'sm.threeand'
)
}}
</span>
<span
class=
"TPNotice"
>
(
{{
$t
(
'sm.tipscompanyyuj'
)
}}
)
</span>
<span
class=
"TPLine"
></span>
</div>
<div
class=
"TP_rightDate"
>
<div
class=
"TP_dateContent"
>
<span
class=
"TP_toLeft"
@
click=
"priceLeftMove"
>
<i
class=
"iconfont icon-previewleft"
></i>
</span>
<div
class=
"TP_childContent"
>
<span
class=
"TP_tips"
:class=
"
{'ckedSpan':item.Checked}" @click="getDateInfo(item)"
v-for="(item,index) in showPriceList" :key="index">
{{
item
.
StartDate
}}
<span
class=
"TP_cancel"
@
click
.
stop=
"delDateList(item)"
>
<i
class=
"iconfont icon-quxiao"
></i>
</span>
</span>
</div>
<span
class=
"TP_Right"
@
click=
"priceRightMove"
>
<i
class=
"iconfont icon-arrow-right"
></i>
</span>
</div>
<div
class=
"TP_DateList"
></div>
</div>
<div>
<div
class=
"TPSetInfo clearfix"
>
<el-form
label-width=
"10px"
>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
>
{{
$t
(
'sm.basebaojia'
)
}}
</span>
<span
class=
"TPsecondTitle"
>
{{
$t
(
'Operation.Op_standard'
)
}}
</span>
</div>
<div
class=
"TPright"
>
<div
class=
"TP_noneed"
>
<el-checkbox
v-model=
"priceData.IsSupportChildren"
:true-label=
"CheckedVaule"
:false-label=
"UnCheckedVaule"
>
{{
$t
(
'op.SupportChild'
)
}}
</el-checkbox>
<el-checkbox
style=
"display:none;"
v-model=
"priceData.IsBookTeam"
:true-label=
"CheckedVaule"
v-if=
"PostConfig.LineId==14"
:false-label=
"UnCheckedVaule"
>
{{
$t
(
'op.OrderTeam'
)
}}
</el-checkbox>
<el-checkbox
v-model=
"priceData.IsLessPrice"
:true-label=
"CheckedVaule"
:false-label=
"UnCheckedLessPrice"
>
{{
$t
(
'op.CanLessPrice'
)
}}
</el-checkbox>
<el-checkbox
v-model=
"priceData.IsNeedAirportShuttle"
@
change=
"IsNeedAirportShuttleChange"
:true-label=
"CheckedVaule"
:false-label=
"UnCheckedLessPrice"
>
是否需要送团
</el-checkbox>
<template
v-if=
"CurrentUserInfo.RB_Group_id==2"
>
<input
type=
"button"
class=
"normalBtn"
:value=
"$t('op.HotelUse')"
@
click=
"outerVisible=true"
v-if=
"(PostConfig.LineId==14 || PostConfig.LineId==131|| PostConfig.LineId==90||PostConfig.LineId==168) "
/>
</
template
>
<
template
v-else
>
<input
type=
"button"
class=
"normalBtn"
:value=
"$t('op.HotelUse')"
@
click=
"outerVisible=true"
v-if=
"IsDirect==1 && priceData.PriceHotelList&&priceData.PriceHotelList.length>0"
/>
</
template
>
</div>
<div
style=
"margin:0 0 20px 10px;height:34px;"
>
<div
style=
"display:inline-block;height:34px;line-height:34px;"
>
<el-checkbox
v-model=
"priceData.IsUseCompanyBus"
:true-label=
"CheckedVaule"
:false-label=
"UnCheckedLessPrice"
label=
"公司车辆"
>
</el-checkbox>
</div>
<
template
v-if=
"priceData.IsUseCompanyBus==1"
>
<el-select
v-model=
"priceData.BusPriceId"
>
<el-option
v-for=
"item in busPriceList"
:key=
"item.Id"
:label=
"item.BusNumber"
:value=
"item.Id"
>
<span
style=
"float: left"
>
{{
item
.
AreaTypeName
}}
(
{{
item
.
BusTypeStr
}}
)
</span>
<span
style=
"float: right; color: #8492a6; font-size: 13px"
>
{{
item
.
BusNumber
}}
</span>
</el-option>
</el-select>
</
template
>
</div>
<el-form-item
prop=
"B2BMemberPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.B2BMemberPrice"
@
keyup
.
native=
"checkPrice(priceData,'B2BMemberPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_fellowMember'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"B2BPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.B2BPrice"
@
keyup
.
native=
"checkPrice(priceData,'B2BPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_fellow'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"B2CMemberPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.B2CMemberPrice"
@
keyup
.
native=
"checkPrice(priceData,'B2CMemberPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_directMember'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"B2CPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.B2CPrice"
@
keyup
.
native=
"checkPrice(priceData,'B2CPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_direct'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"BabyPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.BabyPrice"
@
keyup
.
native=
"checkInteger(priceData,'BabyPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_baby'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.SingleDMCPrice"
@
keyup
.
native=
"checkPrice(priceData,'SingleDMCPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'salesModule.SingleJ'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.TipAmount"
@
keyup
.
native=
"checkPrice(priceData,'TipAmount')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'op.RTXF'
)
}}
</
template
>
</el-input>
</el-form-item>
</div>
</div>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
>
{{$t('sm.otherbaojia')}}
</span>
<span
class=
"TPsecondTitle"
>
{{$t('Operation.Op_Income')}}
</span>
</div>
<div
class=
"TPright"
>
<el-form-item
prop=
"ChildNeedPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.ChildNeedPrice"
@
keyup
.
native=
"checkInteger(priceData,'ChildNeedPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_childBed'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"BabyChargePrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.BabyChargePrice"
@
keyup
.
native=
"checkPrice(priceData,'BabyChargePrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_childSurcharge'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"OldManChargePrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.OldManChargePrice"
@
keyup
.
native=
"checkPrice(priceData,'OldManChargePrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_oldmanSurcharge'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"VisaPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.VisaPrice"
@
keyup
.
native=
"checkPrice(priceData,'VisaPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_visaPrice'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"SingleRoomPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.SingleRoomPrice"
@
keyup
.
native=
"checkPrice(priceData,'SingleRoomPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_singleRoomcha'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"SafeMoney"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.SafeMoney"
@
keyup
.
native=
"checkInteger(priceData,'SafeMoney')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_insurance'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"OtherPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.OtherPrice"
@
keyup
.
native=
"checkPrice(priceData,'OtherPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_zafei'
)
}}
</
template
>
</el-input>
</el-form-item>
</div>
</div>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
></span>
<span
class=
"TPsecondTitle"
></span>
</div>
<div
class=
"TPright"
>
<el-form-item
prop=
"ForeignPassportPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w300 ComSeat"
v-model=
"priceData.ForeignPassportPrice"
@
keyup
.
native=
"checkPrice(priceData,'ForeignPassportPrice')"
>
<
template
slot=
"prepend"
>
非中国大陆护照报价
</
template
>
</el-input>
</el-form-item>
</div>
</div>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
></span>
<span
class=
"TPsecondTitle"
>
{{$t('Operation.Op_jianmian')}}
</span>
</div>
<div
class=
"TPright"
>
<el-form-item
prop=
"ChildNoNeedPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.ChildNoNeedPrice"
@
keyup
.
native=
"checkInteger(priceData,'ChildNoNeedPrice',true)"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_childNobed'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"BackVisaPrice"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.BackVisaPrice"
@
keyup
.
native=
"checkInteger(priceData,'BackVisaPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'Operation.Op_visafeeBack'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
style=
"display:none;"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.RebatePrice"
@
keyup
.
native=
"checkPrice(priceData,'RebatePrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.tonghangfanyong'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.DiscountPrice"
@
keyup
.
native=
"checkPrice(priceData,'DiscountPrice')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.zaoniaoyouhui'
)
}}
</
template
>
</el-input>
</el-form-item>
</div>
</div>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
>
{{$t('leader.leader_Set')}}
</span>
<span
class=
"TPsecondTitle"
></span>
</div>
<div
class=
"TPright clearfix"
>
<el-form-item
prop=
"ClearOrderHour"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.ClearOrderHour"
@
keyup
.
native=
"checkInteger(priceData,'ClearOrderHour')"
@
blur=
"checkInteger(priceData,'ClearOrderHour')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.zidongqingwei'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190 ComSeat"
v-model=
"priceData.SaleClearOrderHour"
@
keyup
.
native=
"checkInteger(priceData,'SaleClearOrderHour')"
@
blur=
"checkInteger(priceData,'SaleClearOrderHour')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'salesModule.XSQW'
)
}}
</
template
>
</el-input>
</el-form-item>
<span
class=
"TP_Sendprepend"
>
{{$t('sm.songqianshijian')}}
</span>
<el-form-item
prop=
"SendVisaTime"
>
<el-date-picker
clearable
class=
"w150"
v-model=
"priceData.SendVisaTime"
type=
"date"
value-format=
"yyyy-MM-dd"
:placeholder=
"$t('admin.admin_choDate')"
></el-date-picker>
</el-form-item>
<el-form-item
prop=
"OutBranchId"
style=
"margin-top:1px;"
>
<span
class=
"TP_Sendprepend"
style=
"margin:3px -1px 0 0"
>
{{$t('scen.sc_cp')}}
</span>
<el-select
class=
"w180"
v-model=
"priceData.OutBranchId"
@
change=
"getstandardCurrencyName"
disabled
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
"SelectOtherDefault"
></el-option>
<el-option
v-for=
"item in companyList"
:key=
"item.id"
:label=
"item.bName"
:value=
"item.id"
>
</el-option>
</el-select>
<span
class=
"TC_neibu"
style=
"float: inherit;margin-left: 5px;margin-right: 5px;"
v-if=
"standardCurrencyName"
:class=
"{'TCneibu':standardCurrencyName=='人民币','TCb2b':standardCurrencyName=='日元',
'TCb2c':standardCurrencyName=='新台币','AppPlat':standardCurrencyName=='',
'otherPlat':standardCurrencyName=='',}"
>
{{standardCurrencyName}}结算
</span>
</el-form-item>
<!-- <el-form-item prop="OutGroupType" style="margin-top:1px;">
<span class="TP_Sendprepend" style="margin:3px -1px 0 0">组团类型</span>
<el-select class="w180" v-model="priceData.OutGroupType">
<el-option v-for="item in OutGroupTypeList" :key="item.Id" :label="item.Name" :value="item.Id">
</el-option>
</el-select>
</el-form-item> -->
<el-form-item
style=
"margin-top:1px;"
>
<span
class=
"TP_Sendprepend"
style=
"margin:3px -1px 0 0"
>
供应商
</span>
<el-select
class=
"w180"
v-model=
"priceData.SupplierId"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
"SelectDefaultValue"
></el-option>
<el-option
v-for=
"item in SupplierList"
:key=
"item.Id"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</el-select>
</el-form-item>
</div>
<div
class=
"TPright clearfix"
>
<el-form-item
prop=
"YSeat"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190"
v-model=
"priceData.YSeat"
@
keyup
.
native=
"checkInteger(priceData,'YSeat')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.jingjicangsp'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"CSeat"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w260"
v-model=
"priceData.CSeat"
@
keyup
.
native=
"checkInteger(priceData,'CSeat')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.cangwuzp'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"FSeat"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w290"
v-model=
"priceData.FSeat"
@
keyup
.
native=
"checkInteger(priceData,'FSeat')"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.toudengxp'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w190"
v-model=
"priceData.Inventory"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.zdctrs'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w260"
v-model=
"priceData.LeaderNum"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.Leadernum'
)
}}
</
template
>
</el-input>
</el-form-item>
<!-- <el-form-item>
<span class="TP_Sendprepend" style="margin:3px -1px 0 0">领队带团/不带团</span>
<el-select class="w180" v-model="priceData.IsLeaderDaiTuan">
<template v-for="item in DaiTuanList">
<el-option :key="item.Id" :label="item.name" :value="item.Id">
</el-option>
</template>
</el-select>
</el-form-item> -->
<el-form-item>
<el-input
:placeholder=
"$t('op.CanSallTicketNum')"
class=
"w290"
v-model=
"priceData.CanSellTicketNum"
maxlength=
"2"
@
keyup
.
native=
"checkInteger(priceData,'CanSellTicketNum')"
@
change=
"CheckSellTicketNum(priceData)"
>
<
template
slot=
"prepend"
>
{{
$t
(
'op.CanSallTicketNum'
)
}}
</
template
>
</el-input>
</el-form-item>
</div>
<div
class=
"TPright clearfix"
>
<el-form-item
prop=
"GatherTime"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w290 ComSeat"
v-model=
"priceData.GatherTime"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.jiheshijian'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"GatherAddress"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w460 ComSeat"
v-model=
"priceData.GatherAddress"
>
<
template
slot=
"prepend"
>
{{
$t
(
'sm.jihedidian'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
style=
"margin-top:1px;"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w260"
v-model=
"priceData.AirportService"
>
<
template
slot=
"prepend"
>
{{
$t
(
'op.AirSupplier'
)
}}
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"EmergencyContact"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w260"
v-model=
"priceData.EmergencyContact"
>
<
template
slot=
"prepend"
>
紧急联系人
</
template
>
</el-input>
</el-form-item>
<el-form-item
prop=
"SendPersion"
>
<el-input
class=
"w260"
:disabled=
"!priceData.IsNeedAirportShuttle"
placeholder=
"请输入送团人"
v-model=
"priceData.SendPersion"
>
<
template
slot=
"prepend"
>
送团人
</
template
>
</el-input>
</el-form-item>
<div
class=
"w260"
></div>
<el-form-item>
</el-form-item>
<el-form-item>
<div
class=
"w260"
></div>
</el-form-item>
<el-form-item>
<div
class=
"w260"
></div>
</el-form-item>
<el-form-item
style=
"margin-top: -20px"
>
<el-input
:placeholder=
"$t('pub.pleaseImport')"
class=
"w260 ComSeat"
v-model=
"priceData.GatherTag"
>
<
template
slot=
"prepend"
>
{{
$t
(
'op.JHbiaoshi'
)
}}
</
template
>
</el-input>
</el-form-item>
</div>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
></span>
<span
class=
"TPsecondTitle"
>
{{$t('salesModule.ScenicRefund')}}
</span>
</div>
<div
class=
"TPright clearfix"
>
<el-popover
popper-class=
"_TravelPricePopover"
trigger=
"click"
>
<div>
<div
class=
"ScenicDiv"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<td
class=
"_color_666"
>
{{$t('fnc.xuanze')}}
</td>
<td
class=
"_color_666"
>
{{$t('visaT.jdname')}}
</td>
<td
class=
"_color_666"
>
{{$t('fnc.tkjine')}}
</td>
</tr>
<tr
v-for=
"item in priceData.ScenicBackList"
>
<td>
<el-checkbox
:checked=
"item.IsChecked"
@
change=
"getScenic(item)"
></el-checkbox>
</td>
<td>
{{item.Name}}
</td>
<td>
<el-input
class=
"w80"
@
keyup
.
native=
"checkPrice(item,'RefundMoney')"
v-model=
"item.RefundMoney"
></el-input>
</td>
</tr>
</table>
</div>
</div>
<div
slot=
"reference"
class=
"SimulateDrop-box"
>
<span
class=
"SD_flight"
v-for=
"subItem in ScenicList"
>
{{subItem.Name}}
</span>
<i
class=
"iconfont icon-arrow-down SimulaDrop"
></i>
</div>
</el-popover>
<el-form-item>
<span
class=
"TP_Sendprepend"
style=
"margin-left:0;width:120px;"
>
{{$t('sm.xiaoshouzt')}}
</span>
<el-select
class=
"w180"
v-model=
"priceData.TCSaleState"
>
<el-option
v-for=
"item in TeamList"
:key=
"item.Id"
:label=
"item.name"
:value=
"item.Id"
>
</el-option>
</el-select>
</el-form-item>
</div>
</div>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
></span>
<span
class=
"TPsecondTitle"
>
{{$t('sm.jipiaobangding')}}
</span>
</div>
<div
class=
"TPright clearfix"
>
<el-popover
popper-class=
"_TravelPricePopover"
trigger=
"click"
>
<div>
<div
style=
"margin-bottom:20px;"
>
{{$t('hotel.hotel_StartDate')}}
<el-date-picker
class=
"w150"
type=
"date"
v-model=
"QFlightDateStart"
:picker-options=
"pickerBeginDateBefore"
value-format=
"yyyy-MM-dd"
placeholder
>
</el-date-picker>
{{$t('hotel.hotel_EndDate')}}
<el-date-picker
class=
"w150"
type=
"date"
v-model=
"QFlightDateEnd"
:picker-options=
"pickerBeginDateAfter"
value-format=
"yyyy-MM-dd"
placeholder
>
</el-date-picker>
<button
class=
"normalBtn"
@
click
.
stop=
"getSelectFilght()"
>
{{$t('pub.searchBtn')}}
</button>
</div>
<div
class=
"jiDiv"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr>
<td
class=
"_color_666"
>
{{$t('fnc.xuanze')}}
</td>
<td
class=
"_color_666"
>
{{$t('fnc.jpbianhao')}}/{{$t('op.Tickets')}}
</td>
<td
class=
"_color_666"
>
{{$t('system.query_flightNum')}}/{{$t('system.query_airCompanyName')}}/{{$t('Airticket.Air_segment')}}
</td>
<td
class=
"_color_666"
>
{{$t('adm.adm_time')}}
</td>
<td
class=
"_color_666"
>
PNR
</td>
<td
class=
"_color_666"
>
{{$t('visa.v_xcdays')}}
</td>
<td
class=
"_color_666"
>
{{$t('op.TicketNum')}}/{{$t('hotel.table_UseAmount')}}
</td>
<td
class=
"_color_666"
>
{{$t('op.BindTicket')}}
</td>
</tr>
<tr
v-for=
"fitem in selectFilghtList"
>
<td>
<el-checkbox
v-model=
"fitem.IsSelected===true"
@
change=
"getSelect(fitem)"
></el-checkbox>
</td>
<td>
{{fitem.AirticketId}}/{{fitem.TicketByName}}
</td>
<td>
<span
class=
"TP_Airticktid"
@
click=
"goUrl('TicketManager',fitem.AirticketId)"
>
{{fitem.FlightNumber}}
</span>
/
{{fitem.AlName}} / {{fitem.DepartureName}}-{{fitem.ArrivalCityName}}
</td>
<td>
{{fitem.FlightDate}} {{fitem.Departure_time}}
</td>
<td>
{{fitem.PNR}}
</td>
<td>
{{fitem.DayNum}}
</td>
<td>
{{fitem.TicketNum}} / {{fitem.UseAmount}}
</td>
<td>
<el-input
class=
"w69"
:placeholder=
"$t('salesModule.AirNum')"
@
keyup
.
native=
"getFlightBindNum(fitem)"
v-model=
"fitem.BindNum"
></el-input>
</td>
</tr>
</table>
</div>
</div>
<div
slot=
"reference"
class=
"SimulateDrop-box"
>
<span
class=
"SD_flight"
v-for=
"item in FinfoList"
>
{{item.name}} {{item.date}}
</span>
<i
class=
"iconfont icon-arrow-down SimulaDrop"
></i>
</div>
</el-popover>
<el-form-item
style=
"margin-top:1px;"
>
<span
class=
"TP_Sendprepend"
style=
"margin:3px -1px 0 0"
>
{{$t('visa.v_salecompany')}}
</span>
<el-select
class=
"w350 multiple_input"
:class=
"{'SaleBranchList':priceData.SaleBranchIdArray==''}"
v-model=
"priceData.SaleBranchIdArray"
multiple
@
change=
"ChangeSaleBranch(priceData)"
>
<el-option
v-for=
"item in companyList"
:key=
"item.id"
:label=
"item.bName"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
</div>
</div>
<div
class=
"clearfix"
>
<div
class=
"TPright clearfix"
>
<el-form-item
prop=
"OutBranchId"
style=
"margin-top:1px;"
>
<span
class=
"TP_Sendprepend"
style=
"margin:3px -1px 0 0"
>
团队类型
</span>
<el-select
class=
"w180"
v-model=
"priceData.PriceTeamType"
>
<
template
v-for=
"item in TeamListArr"
>
<!--去掉小包团2023-04-19-->
<el-option
v-if=
"item.Id==2||item.Id==3"
:key=
"item.Id"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</
template
>
</el-select>
</el-form-item>
<el-form-item
style=
"margin-top:1px;"
>
<span
class=
"TP_Sendprepend"
style=
"margin:3px -1px 0 0"
>
报价单地址
</span>
<el-upload
class=
"upload-demo"
style=
"display:inline-block;position:relative;top:-1px;left:3px;"
:http-request=
"uploadFileBtn"
:multiple=
"true"
:show-file-list=
"false"
action=
""
>
<el-button
size=
"small"
type=
"primary"
>
上传
</el-button>
</el-upload>
<a
style=
"margin-left:20px;color:blue;"
:href=
"priceData.PriceOfferUrl"
v-if=
"priceData.PriceOfferUrl"
target=
"_blank"
>
预览
</a>
<span
style=
"color:red"
>
行程如有变化,请重新上传报价单!
</span>
</el-form-item>
</div>
</div>
<div
class=
"clearfix"
>
<div
class=
"leftSetInfo"
>
<span
class=
"TPbaseSet"
style=
"width:62px;"
></span>
<span
class=
"TPsecondTitle"
style=
"width:66px;"
>
{{$t('sm.opduiwaibeizhu')}}
</span>
</div>
<div
class=
"TPright"
style=
"float:left;"
>
<el-form-item
style=
"margin-top:-20px;"
>
<el-input
v-model=
"priceData.OPRemark"
type=
"textarea"
:autosize=
"{minRows: 3, maxRows: 3 }"
resize=
"none"
class=
"w760"
:placeholder=
"$t('sm.opduiwaibeizhu')"
></el-input>
</el-form-item>
<el-form-item>
<div>
<span
class=
"TCSwitchtitle"
>
{{$t('sm.dingdancaozuo')}}
</span>
<span
class=
"TCswitch"
>
<el-switch
v-model=
"priceData.IsOrder"
:active-value=
"inActive"
:inactive-value=
"notInActive"
>
</el-switch>
<div
class=
"TC-config"
>
{{$t('sm.closenotcaozuo')}}
</div>
</span>
</div>
</el-form-item>
<el-form-item>
<div>
<span
class=
"TCSwitchtitle"
>
{{$t('sm.tonghangzaixianyd')}}
</span>
<span
class=
"TCswitch"
>
<el-switch
v-model=
"priceData.IsB2B"
:active-value=
"inActive"
:inactive-value=
"notInActive"
>
</el-switch>
<div
class=
"TC-config"
>
{{$t('sm.cpjhtuiB2bzzd')}}
</div>
</span>
</div>
</el-form-item>
</div>
<div
class=
"TPright"
style=
"float:left;"
>
<el-form-item>
<div>
<span
class=
"TCSwitchtitle"
>
{{$t('sm.bmhb')}}
</span>
<span
class=
"TCswitch"
>
<el-switch
v-model=
"priceData.IsSubstitution"
:active-value=
"inActive"
:inactive-value=
"notInActive"
></el-switch>
<div
class=
"TC-config"
>
{{$t('sm.closenotcsrenshu')}}
</div>
</span>
</div>
</el-form-item>
<el-form-item>
<div>
<span
class=
"TCSwitchtitle"
>
{{$t('sm.zhikezxyd')}}
</span>
<span
class=
"TCswitch"
>
<el-switch
v-model=
"priceData.IsB2C"
:active-value=
"inActive"
:inactive-value=
"notInActive"
>
</el-switch>
<div
class=
"TC-config"
>
{{$t('op.TuisongB2c')}}
</div>
</span>
</div>
</el-form-item>
</div>
</div>
<div
class=
"TPright"
>
<span
v-if=
"priceData.IsLessPrice==1"
@
click=
"getLessPriceInfo(),lessPriceVisible=true"
class=
"lessPriceRule"
>
{{$t('op.sjgz')}}
</span>
</div>
</div>
</el-form>
</div>
<div
class=
"TPNotice"
>
{{$t('sm.ysbjchajiacl')}}
</div>
</div>
</div>
<
template
v-if=
"CurrentUserInfo.UseFlightType==0"
>
<TravelPriceFlightList
@
headCallBack=
"setDisDirectFlight"
ref=
"TravelFlightList"
:priceData=
"priceData"
:AirTicketId=
"priceData.AirTicketId"
:DeleteAirticketIds=
"priceData.DeleteAirticketIds"
:selectFilghtList=
"selectFilghtList"
></TravelPriceFlightList>
</
template
>
<
template
v-else
>
<TravelPriceFlightListSelf
@
headCallBack=
"setDisDirectFlight"
ref=
"TravelFlightList"
:priceData=
"priceData"
:AirTicketId=
"priceData.AirTicketId"
:DeleteAirticketIds=
"priceData.DeleteAirticketIds"
:selectFilghtList=
"selectFilghtList"
></TravelPriceFlightListSelf>
</
template
>
</div>
<el-dialog
custom-class=
'Tp_hotelDialog'
title=
"酒店使用情况"
:visible
.
sync=
"outerVisible"
center
>
<table
class=
"TphotelTable"
border=
"0"
cellspacing=
'1'
v-if=
"priceData.TCID>0"
>
<tr>
<th
width=
"100"
>
{{$t('sm.Date')}}
</th>
<th
width=
"150"
>
{{$t('hotel.hotel')}}
</th>
<th
width=
"240"
>
{{$t('op.jdqk')}}
</th>
<th
width=
"100"
>
{{$t('salesModule.UseRoomTime')}}
</th>
<th
width=
"100"
>
{{$t('salesModule.ChangeHotel')}}
</th>
<th
width=
"120"
>
{{$t('system.table_operation')}}
</th>
</tr>
<
template
v-for=
"(subItem,subIndex) in priceData.PriceHotelList"
>
<tr
v-for=
"(childItem,childIndex) in subItem.SubList"
>
<td
style=
"background-color:#E6E6E6;color:#333;"
v-if=
"childIndex==0"
:rowspan=
"subItem.SubList.length"
>
{{
subItem
.
UseDay
}}
(
{{
getDayByDate
(
subItem
.
UseDay
)
}}
)
</td>
<td
style=
"text-align:left;padding-left:3px;"
>
{{
childItem
.
HotelName
}}
</td>
<td
style=
"text-align:left;padding-left:3px;"
>
<span
v-if=
"childItem.UseCount>0 && subItem.SubList.length==1"
>
<template
v-if=
"childItem.OPState==1&&childItem.HotelName!='温馨的家'&&childItem.HotelName!='机场附近酒店'"
>
<a
style=
"color:green"
>
【
{{
$t
(
'salesModule.OPZD'
)
}}
】
</a>
</
template
>
<
template
v-else-if=
"childItem.OPState==2&&childItem.DMCState==0&&childItem.HotelName!='温馨的家'&&childItem.HotelName!='机场附近酒店'"
>
<a
style=
"color:red"
>
【
{{
$t
(
'salesModule.OPZD'
)
}}
】
</a>
</
template
>
<
template
v-else
>
<template
v-if=
"childItem.DMCState==1&&childItem.HotelName!='温馨的家'&&childItem.HotelName!='机场附近酒店'"
>
<a
style=
"color:green"
>
【
{{
$t
(
'salesModule.DJOK'
)
}}
】
</a>
</
template
>
<
template
v-if=
"childItem.DMCState==2&&childItem.HotelName!='温馨的家'&&childItem.HotelName!='机场附近酒店'"
>
<a
style=
"color:red"
>
【
{{
$t
(
'salesModule.DJZK'
)
}}
】
</a>
</
template
>
<
template
v-if=
"childItem.DMCState==0&&childItem.HotelName!='温馨的家'&&childItem.HotelName!='机场附近酒店'"
>
<a
style=
"color:red"
>
【
{{
$t
(
'salesModule.DJWCZ'
)
}}
】
</a>
</
template
>
</template>
【
<span
style=
"color:green"
>
{{$t('op.btsy')}}:{{childItem.UseCount}}
{{childItem.CostPrice!=0?"价格:"+childItem.CostPrice:""}}
</span>
】
</span>
<span
style=
"color:#E95252;"
v-if=
"childItem.HotelName!='温馨的家'&&childItem.HotelName!='机场附近酒店'"
>
【{{$t('hotel.hotel_remainList')}}:{{childItem.RemainingInventory}}】
</span>
</td>
<td>
<
template
v-if=
"childItem.OPState==1||(childItem.OPState==2 && childItem.DMCState==0)"
>
{{
childItem
.
CreateDateStr
}}
</
template
>
</td>
<td
v-if=
"childIndex==0"
:rowspan=
"subItem.SubList.length"
>
<el-select
class=
"w180"
v-model=
"subItem.NewHotelId"
@
visible-change=
"getHotelList(subItem,$event)"
@
change=
"changeHotelList()"
filterable
>
<el-option
:key=
"0"
:label=
"$t('pub.pleaseSel')"
:value=
"0"
></el-option>
<el-option
v-for=
"hotelItem in subItem.HotelList"
:key=
"hotelItem.ID"
:label=
"hotelItem.Name"
:value=
"hotelItem.ID"
>
<span
style=
"float:left"
>
{{hotelItem.Name}}
</span>
<span
style=
"float:right;color:red;font-size:13px"
>
{{$t('hotel.hotel_remainList')}}:{{hotelItem.Inventory}}/{{$t('Operation.Op_price')}}:{{hotelItem.CostPrice}}{{hotelItem.PriceTaxTypeStr}}
</span>
</el-option>
</el-select>
</td>
<td>
<span
v-if=
"childItem.UseCount>0 && subItem.SubList.length==1"
>
<span
style=
"color:red;white-space:nowrap;cursor:pointer;"
@
click=
"DeleteStock(subItem)"
>
{{$t('system.ph_shanchu')}}
</span>
</span>
<span>
<el-popover
width=
"700"
trigger=
"click"
popper-class=
"DMC_HotelPop"
>
<commonPHInfo
:name=
'"comPriceHotelInfo"+subIndex+childIndex'
:ref=
'"comPriceHotelInfo"+subIndex+childIndex'
></commonPHInfo>
<span
slot=
"reference"
class=
"price"
style=
"cursor:pointer;text-decoration:underline;"
@
click=
"GetHotelUsePriceList(childItem.HotelId,subItem.UseDay,subIndex,childIndex)"
>
{{$t('op.kcqk')}}
</span>
</el-popover>
</span>
</td>
</tr>
</template>
</table>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"PostConfig.IsUpdateHotel=1,saveHoteluseDetail(1)"
v-if=
"!(priceData.IsOpenHotel&&priceData.IsOpenHotel==1)"
:class=
"{'disClick':!isSaved}"
>
{{btnText}}
</button>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"PostConfig.IsUpdateHotel=2;saveHoteluseDetail(2)"
v-if=
"!(priceData.IsOpenHotel&&priceData.IsOpenHotel==1)"
:class=
"{'disClick':!isSaved}"
>
{{btnTongBu}}
</button>
<button
class=
"hollowFixedBtn"
:class=
"{'disClick':!isSaved}"
@
click=
"cancelHotelUseDetail()"
>
{{$t('pub.cancelBtn')}}
</button>
<
template
v-if=
"priceData.IsOpenHotel&&priceData.IsOpenHotel==1"
>
<br
/>
<span
style=
"color:red;font-weight:bold;"
>
※
{{
$t
(
'op.DJyiguanbi'
)
}}
.
</span>
</
template
>
</div>
</el-dialog>
<el-dialog
custom-class=
'Tp_hotelDialog'
title=
"少价规则"
:visible
.
sync=
"lessPriceVisible"
center
>
<table
class=
"TphotelTable"
border=
"0"
cellspacing=
'1'
v-if=
"lessPriceData.length>0"
>
<tr>
<th>
{{$t('op.syr')}}
</th>
<th>
{{$t('op.bmzg')}}
</th>
<th>
{{$t('op.fgszjl')}}
</th>
</tr>
<tr
v-for=
"item in lessPriceData"
>
<td>
<span
v-if=
"item.LessMoney!=null"
style=
"margin-right:30px;"
>
{{item.LessMoney}}{{$t('hotel.hotel_yuan')}}
</span><span
v-if=
"item.LessPercent!=null"
>
{{item.LessPercent}}%
</span>
</td>
<td>
<span
v-if=
"item.DeptLessMoney!=null"
style=
"margin-right:30px;"
>
{{item.DeptLessMoney}}{{$t('hotel.hotel_yuan')}}
</span><span
v-if=
"item.DeptLessPercent!=null"
>
{{item.DeptLessPercent}}%
</span>
</td>
<td>
<span
v-if=
"item.FilialeLessMoney!=null"
style=
"margin-right:30px;"
>
{{item.FilialeLessMoney}}{{$t('hotel.hotel_yuan')}}
</span><span
v-if=
"item.FilialeLessPercent!=null"
>
{{item.FilialeLessPercent}}%
</span>
</td>
</tr>
</table>
<div
class=
"noData"
v-else
>
{{$t('system.content_noData')}}
</div>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"hollowFixedBtn"
@
click=
"lessPriceVisible=false"
>
{{$t('pub.cancelBtn')}}
</button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
commonPHlInfo
from
"../../commonPage/commonPriceHotelInfo.vue"
;
import
TravelPriceFlightList
from
"../TravelGroupControl/TravelPriceFlightList.vue"
;
import
TravelPriceFlightList_Self
from
"../TravelGroupControl/TravelPriceFlightList_Self.vue"
;
export
default
{
props
:
[
"priceList"
,
"priceIsDirect"
,
"OfferList"
,
"PostConfig"
,
"modifyTcid"
,
"TeamType"
,
"CurrentUserInfo"
,
"IsDirect"
],
data
()
{
return
{
outerVisible
:
false
,
currentDay
:
1
,
currentMonth
:
1
,
currentYear
:
1970
,
uploadList
:
[],
CheckedVaule
:
1
,
//选中值
UnCheckedVaule
:
2
,
//没选中
UnCheckedLessPrice
:
0
,
//不少价
isSaved
:
true
,
btnText
:
'保存'
,
btnTongBu
:
'同步酒店'
,
//日期数组
days
:
[],
dateString
:
"2016-01-02"
,
inActive
:
1
,
notInActive
:
0
,
//选中状态
chooseDay
:
""
,
DateArr
:
[],
priceData
:
{
AdImage
:
{
Url
:
""
,
Name
:
""
},
SaleBranchIdArray
:
[],
OutGroupType
:
0
,
},
OutGroupTypeList
:
[{
Name
:
'常规'
,
Id
:
0
},
{
Name
:
'落地团'
,
Id
:
1
},
],
returnPriceList
:
this
.
priceList
,
//酒店列表
HotelList
:
[],
companyList
:
[],
offerList
:
[],
selectFilghtList
:
[],
FinfoList
:
[],
//选中景点
ScenicList
:
[],
//下拉框默认值
SelectDefaultValue
:
0
,
SelectOtherDefault
:
-
1
,
isFold
:
""
,
rules
:
{
Inventory
:
[{
required
:
true
,
message
:
"请填写首次入库数"
,
trigger
:
"change"
}],
ClearOrderHour
:
[{
required
:
true
,
message
:
"请填写自动清位"
,
trigger
:
"change"
}],
SendVisaTime
:
[{
required
:
true
,
message
:
"请选择送签时间"
,
trigger
:
"change"
}]
},
TeamList
:
[{
Id
:
1
,
name
:
"一般团"
},
{
Id
:
2
,
name
:
"促销团"
},
{
Id
:
3
,
name
:
"主推团"
}
],
DaiTuanList
:
[{
Id
:
1
,
name
:
"带团"
},
{
Id
:
0
,
name
:
"不带团"
}
],
currentPriceIndex
:
0
,
//当前团期索引位置
showPriceList
:
[],
priceShowCount
:
6
,
//团期展示条数
QFlightDateStart
:
''
,
//航班查询开始日期
QFlightDateEnd
:
''
,
//航班查询结束日期
pickerBeginDateBefore
:
{
disabledDate
:
time
=>
{
let
endTime
=
new
Date
(
this
.
QFlightDateEnd
);
return
endTime
.
getTime
()
<
time
.
getTime
();
}
},
pickerBeginDateAfter
:
{
disabledDate
:
time
=>
{
let
startTime
=
new
Date
(
this
.
QFlightDateStart
);
return
startTime
.
getTime
()
>=
time
.
getTime
();
}
},
//少价规则
lessPriceVisible
:
false
,
lessPriceData
:
[],
SupplierList
:
[],
//供应商列表
TeamListArr
:
[],
busPriceList
:
[],
//车辆列表
standardCurrencyName
:
''
,
};
},
methods
:
{
IsNeedAirportShuttleChange
()
{
if
(
!
this
.
priceData
.
IsNeedAirportShuttle
)
{
this
.
priceData
.
SendPersion
=
''
}
},
//获取团期供应商列表
getTravelSupplier
()
{
this
.
apipost
(
"supplier_get_GetTravelSupplierList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
SupplierList
=
res
.
data
.
data
;
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
data
.
message
});
}
},
err
=>
{}
);
},
//销售公司改变方法
ChangeSaleBranch
(
item
)
{
var
str
=
""
;
if
(
item
.
SaleBranchIdArray
&&
item
.
SaleBranchIdArray
.
length
>
0
)
{
item
.
SaleBranchIdArray
.
forEach
(
subItem
=>
{
str
+=
subItem
+
","
;
});
str
=
str
.
substring
(
0
,
str
.
lastIndexOf
(
','
));
}
item
.
SaleBranchId
=
str
;
},
//调用子组件方法
GetHotelUsePriceList
(
HotelId
,
UseDay
,
index
,
hotelSubIndex
)
{
let
str
=
`comPriceHotelInfo
${
index
}${
hotelSubIndex
}
`
;
this
.
$refs
[
str
][
0
].
getHotelPriceList
(
HotelId
,
UseDay
);
},
//点击折叠
fold
()
{
if
(
this
.
isFold
==
""
)
{
this
.
isFold
=
1
;
}
else
{
this
.
isFold
=
""
;
}
},
//年月点击切换
getDateString
:
function
()
{
this
.
dateString
=
this
.
$calendarUtils
.
formatDate
(
this
.
currentYear
,
this
.
currentMonth
,
1
);
},
//点击选中日历日期
clickedDay
(
item
)
{
this
.
chooseDay
=
this
.
getDayStr
(
item
.
day
);
switch
(
item
.
checkState
)
{
case
this
.
$calendarUtils
.
checkState
.
hasValue
:
item
.
checkState
=
this
.
$calendarUtils
.
checkState
.
checked
;
var
objItem
=
""
;
if
(
this
.
returnPriceList
.
length
>
0
)
{
objItem
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
returnPriceList
[
0
]));
objItem
.
OPRemark
=
""
;
objItem
.
AirTicketId
=
0
;
objItem
.
AirticketBindList
=
[];
objItem
.
Checked
=
false
;
objItem
.
StartDate
=
this
.
chooseDay
;
objItem
.
TCID
=
0
;
objItem
.
PriceFlight
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
PostConfig
.
FlightList
)
);
//自定义航班列表
objItem
.
SelfPriceFlight
=
[];
}
else
{
objItem
=
{
TCID
:
0
,
AirTicketId
:
0
,
AirticketMoney
:
0
,
B2BMemberPrice
:
0
,
B2BPrice
:
0
,
B2CMemberPrice
:
0
,
B2CPrice
:
0
,
BabyChargePrice
:
0
,
BabyPrice
:
0
,
ChildNeedPrice
:
0
,
ChildNoNeedPrice
:
0
,
ConfigId
:
0
,
DiscountPrice
:
0
,
IsSupportChildren
:
1
,
OfferId
:
0
,
OldManChargePrice
:
0
,
OtherPrice
:
0
,
PeopleNum
:
0
,
RebatePrice
:
0
,
SafeMoney
:
0
,
SingleDMCPrice
:
0
,
SingleRoomPrice
:
0
,
VisaPrice
:
0
,
BackVisaPrice
:
0
,
BackSafeMoney
:
0
,
ContractUrl
:
""
,
ContractArray
:
[],
OutBranchId
:
0
,
GatherTime
:
""
,
GatherAddress
:
""
,
AdImage
:
""
,
YSeat
:
0
,
CSeat
:
0
,
FSeat
:
0
,
Inventory
:
0
,
StartDate
:
this
.
chooseDay
,
ClearOrderHour
:
""
,
SendVisaTime
:
""
,
Checked
:
false
,
SaleBranchId
:
""
,
//销售公司编号
//销售公司数组
SaleBranchIdArray
:
[],
//op备注
OPRemark
:
""
,
//销售状态
TCSaleState
:
1
,
LeaderNum
:
0
,
IsOrder
:
0
,
IsB2B
:
0
,
IsB2C
:
0
,
IsSubstitution
:
1
,
AirticketBindList
:
[],
PriceFlight
:
JSON
.
parse
(
JSON
.
stringify
(
this
.
PostConfig
.
FlightList
)
),
//自定义航班列表
SelfPriceFlight
:
[],
//删除的绑定的航班编号
DeleteAirticketIds
:
""
,
GatherTag
:
""
,
//集合标识
AirportService
:
""
,
//机场服务
//可销售机票数量
CanSellTicketNum
:
2
,
//是否订团,0-不订,1需要订
IsBookTeam
:
0
,
//少价,0-不少价,1少价
IsLessPrice
:
1
,
//是否重新生成行程数据
IsNew
:
false
,
//选中的酒店数组
ChooseHotelArray
:
[],
//销售清位时间
SaleClearOrderHour
:
0
,
//可退景点下拉列表
ScenicBackList
:
[],
TipAmount
:
0
,
//人头小费金额
//非中国大陆护照报价
ForeignPassportPrice
:
0
,
UseFlightType
:
this
.
CurrentUserInfo
.
UseFlightType
,
SupplierId
:
0
,
//供应商编号
PriceTeamType
:
1
,
//团队类型
PriceOfferUrl
:
''
,
//报价单地址
PriceOfferName
:
""
,
//报价单名称
IsUseCompanyBus
:
0
,
//是否使用公司车辆
BusPriceId
:
0
,
//公司车辆编号
EmergencyContact
:
""
,
//紧急联系人
IsNeedAirportShuttle
:
0
,
//是否需要接送服务
GuideNum
:
0
,
//导游人数
IsLeaderDaiTuan
:
1
,
//领队带团/不带团
IsGuideDaiTuan
:
0
//导游带团/不带团
};
}
this
.
returnPriceList
.
push
(
objItem
);
this
.
initDatePickerCheched
();
this
.
returnPriceList
.
sort
(
this
.
$commonUtils
.
createComprisonFunction
(
"StartDate"
)
);
this
.
getDateInfo
(
objItem
);
break
;
}
},
//单团期修改重置日历选中
initDatePickerCheched
()
{
},
RemovePrice
(
dateStr
)
{
var
array
=
[];
this
.
returnPriceList
.
forEach
(
dayItem
=>
{
if
(
dayItem
.
StartDate
!=
dateStr
)
{
array
.
push
(
dayItem
);
}
});
this
.
returnPriceList
=
array
;
},
initCalendar
:
function
(
cur
)
{
var
newDays
=
this
.
$calendarUtils
.
createCalendar
(
cur
);
this
.
currentDay
=
newDays
.
CurrentDay
;
this
.
currentYear
=
newDays
.
CurrentYear
;
this
.
currentMonth
=
newDays
.
CurrentMonth
;
this
.
days
.
length
=
0
;
var
dateArray
=
newDays
.
DayArray
;
for
(
var
i
=
0
;
i
<
dateArray
.
length
;
i
++
)
{
var
d
=
dateArray
[
i
].
day
;
var
dayobject
=
{};
dayobject
.
day
=
d
;
dayobject
.
checkState
=
this
.
$calendarUtils
.
checkState
.
hasValue
;
this
.
days
.
push
(
dayobject
);
}
this
.
initDate
();
},
//初始化数据状态
initDate
()
{
if
(
this
.
days
!=
null
)
{
this
.
days
.
forEach
(
dayItem
=>
{
var
myDate
=
this
.
$calendarUtils
.
formatDate
(
dayItem
.
day
.
getFullYear
(),
dayItem
.
day
.
getMonth
()
+
1
,
dayItem
.
day
.
getDate
()
);
dayItem
.
checkState
=
this
.
$calendarUtils
.
checkState
.
hasValue
;
if
(
this
.
checkPriceExit
(
myDate
))
{
dayItem
.
checkState
=
this
.
$calendarUtils
.
checkState
.
checked
;
}
});
}
this
.
initDatePickerCheched
();
},
//点击左箭头切换年月
pickPre
:
function
(
year
,
month
)
{
var
d
=
new
Date
(
this
.
$calendarUtils
.
formatDate
(
year
,
month
,
1
));
d
.
setDate
(
0
);
this
.
initCalendar
(
this
.
$calendarUtils
.
formatDate
(
d
.
getFullYear
(),
d
.
getMonth
()
+
1
,
1
)
);
},
//点击右箭头切换年月
pickNext
:
function
(
year
,
month
)
{
var
d
=
new
Date
(
this
.
$calendarUtils
.
formatDate
(
year
,
month
,
1
));
d
.
setDate
(
35
);
this
.
initCalendar
(
this
.
$calendarUtils
.
formatDate
(
d
.
getFullYear
(),
d
.
getMonth
()
+
1
,
1
)
);
},
initFlightData
()
{
this
.
selectFilghtList
=
[];
this
.
FinfoList
=
[];
if
(
this
.
priceData
.
AirticketBindList
.
length
>
0
)
{
this
.
QFlightDateStart
=
this
.
priceData
.
AirticketBindList
[
0
].
FlightDate
;
this
.
QFlightDateEnd
=
this
.
priceData
.
AirticketBindList
[
this
.
priceData
.
AirticketBindList
.
length
-
1
]
.
FlightDate
;
this
.
getSelectFilght
();
}
else
{
this
.
QFlightDateStart
=
this
.
daysCalculate
(
this
.
priceData
.
StartDate
,
-
1
);
this
.
QFlightDateEnd
=
this
.
daysCalculate
(
this
.
priceData
.
StartDate
,
1
);
this
.
getSelectFilght
();
}
},
//日期计算
daysCalculate
(
date
,
addDay
)
{
var
date
=
new
Date
(
date
);
//获取当前时间
date
.
setDate
(
date
.
getDate
()
+
addDay
);
return
date
.
Format
(
"yyyy-MM-dd"
);
},
getSelectFilght
()
{
let
createBy
=
this
.
priceData
.
CreateBy
;
if
(
createBy
==
undefined
||
createBy
==
0
)
{
let
userInfo
=
this
.
getLocalStorage
();
createBy
=
userInfo
.
EmployeeId
;
}
let
msg
=
{
QFlightDateStart
:
this
.
QFlightDateStart
,
QFlightDateEnd
:
this
.
QFlightDateEnd
,
CreateBy
:
createBy
,
AirTicketId
:
this
.
priceData
.
AirTicketId
,
TCID
:
this
.
priceData
.
TCID
,
LineId
:
this
.
PostConfig
.
LineId
};
let
that
=
this
;
this
.
apipost
(
"TravelAirTicket_Get_GetSelfPurchaseList"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
resultFilghtList
=
res
.
data
.
data
;
that
.
selectFilghtList
=
[];
resultFilghtList
.
forEach
(
x
=>
{
that
.
selectFilghtList
.
push
(
x
);
});
//通过返回数据初始化下拉选中
that
.
FinfoList
=
[];
if
(
that
.
priceData
.
AirticketBindList
!=
null
)
{
that
.
priceData
.
AirticketBindList
.
forEach
(
x
=>
{
that
.
selectFilghtList
.
forEach
(
y
=>
{
//&& x.BindNum > 0 HK 2023-06-06 去掉条件
if
(
x
.
PurchaseId
==
y
.
Id
)
{
y
.
IsSelected
=
true
;
y
.
BindNum
=
x
.
BindNum
;
that
.
FinfoList
.
push
({
name
:
y
.
AlName
,
date
:
y
.
FlightDate
});
}
});
});
}
that
.
$forceUpdate
();
}
else
{
this
.
$message
({
type
:
"error"
,
message
:
res
.
data
.
message
});
}
},
err
=>
{}
);
},
validateForm
()
{
//表单验证
let
flag
=
true
;
if
(
this
.
returnPriceList
==
null
||
this
.
returnPriceList
==
undefined
||
this
.
returnPriceList
.
length
===
0
)
{
this
.
Error
(
"请选择团期"
);
flag
=
false
;
}
if
(
flag
)
{
this
.
returnPriceList
.
forEach
(
x
=>
{
if
(
flag
)
{
if
(
!
this
.
validateTeamQuot
(
x
))
{
flag
=
false
;
}
}
});
}
return
flag
;
},
//数据验证
validateTeamQuot
(
quotationPrice
)
{
if
(
this
.
isNullOrEmpty
(
quotationPrice
.
B2BMemberPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
B2BPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
B2CMemberPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
B2CPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
BabyChargePrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
BabyPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
ChildNeedPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
ChildNoNeedPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
OldManChargePrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
OtherPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
ForeignPassportPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
SingleRoomPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
VisaPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
SingleDMCPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
BackVisaPrice
)
||
this
.
isNullOrEmpty
(
quotationPrice
.
OutBranchId
)
)
{
return
false
;
}
else
{
return
true
;
}
},
isNullOrEmpty
(
value
)
{
if
(
value
===
null
||
value
===
""
)
{
return
true
;
}
else
{
return
false
;
}
},
getDayStr
(
date
)
{
var
_string
=
this
.
$calendarUtils
.
formatDate
(
date
.
getFullYear
(),
date
.
getMonth
()
+
1
,
date
.
getDate
()
);
return
_string
;
},
setDisDirectFlight
(
obj
)
{
if
(
this
.
CurrentUserInfo
.
UseFlightType
==
0
)
{
if
(
obj
.
priceFlight
&&
obj
.
priceFlight
.
length
>=
0
)
{
this
.
priceData
.
PriceFlight
=
JSON
.
parse
(
JSON
.
stringify
(
obj
.
priceFlight
));
}
}
else
{
if
(
obj
.
priceFlight
&&
obj
.
priceFlight
.
length
>
0
)
{
this
.
priceData
.
SelfPriceFlight
=
JSON
.
parse
(
JSON
.
stringify
(
obj
.
priceFlight
));
}
}
if
(
obj
.
DeleteAirticketIdArray
&&
obj
.
DeleteAirticketIdArray
.
length
>
0
)
{
this
.
priceData
.
DeleteAirticketIds
=
obj
.
DeleteAirticketIdArray
.
join
(
','
);
}
},
//删除标签
delDateList
(
item
)
{
var
StartDateStr
=
item
.
StartDate
;
var
that
=
this
;
that
.
Confirm
(
"是否删除?删除后不能恢复!"
,
function
()
{
if
(
item
.
TCID
>
0
)
{
that
.
apipost
(
"travel_post_RemoveTravelPrice"
,
{
TCID
:
item
.
TCID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
that
.
deletePrice
(
StartDateStr
);
}
else
{
that
.
Info
(
res
.
data
.
message
);
}
},
null
);
}
else
{
that
.
deletePrice
(
StartDateStr
)
}
});
},
//删除团期
deletePrice
(
StartDateStr
)
{
this
.
days
.
forEach
(
dayItem
=>
{
var
dateStr
=
this
.
getDayStr
(
dayItem
.
day
);
if
(
dateStr
==
StartDateStr
)
{
dayItem
.
checkState
=
this
.
$calendarUtils
.
checkState
.
hasValue
;
}
});
var
array
=
[];
let
deleteIsChecked
=
false
;
this
.
returnPriceList
.
forEach
(
priceItem
=>
{
if
(
priceItem
.
StartDate
!=
StartDateStr
)
{
array
.
push
(
priceItem
);
}
else
{
if
(
priceItem
.
Checked
)
{
deleteIsChecked
=
true
;
}
}
});
this
.
returnPriceList
=
array
;
if
(
deleteIsChecked
&&
this
.
returnPriceList
.
length
>
0
)
{
this
.
returnPriceList
[
0
].
Checked
=
true
;
}
},
//选中的日期点击事件
getDateInfo
(
item
)
{
this
.
returnPriceList
.
forEach
(
x
=>
{
x
.
Checked
=
false
;
});
item
.
Checked
=
true
;
this
.
priceData
=
item
;
this
.
initFlightData
();
},
//左移动获取展示的团期
priceLeftMove
()
{
if
(
this
.
currentPriceIndex
>
0
)
{
this
.
currentPriceIndex
--
;
this
.
initShowPriceList
();
}
},
//右移动获取展示的团期
priceRightMove
()
{
if
(
this
.
currentPriceIndex
<
this
.
returnPriceList
.
length
-
this
.
priceShowCount
)
{
this
.
currentPriceIndex
++
;
this
.
initShowPriceList
();
}
},
//初始化显示团期数据
initShowPriceList
()
{
let
showPriceList
=
[];
let
getCount
=
0
;
//获取到得数量
this
.
showPriceList
=
showPriceList
;
for
(
let
i
=
this
.
currentPriceIndex
;
i
<
this
.
returnPriceList
.
length
&&
getCount
<
this
.
priceShowCount
;
i
++
)
{
showPriceList
.
push
(
this
.
returnPriceList
[
i
]);
getCount
++
;
}
},
//修改时判断初始化团期是否存在
checkPriceExit
(
date
)
{
let
isExit
=
false
;
this
.
priceList
.
forEach
(
price
=>
{
if
(
this
.
$commonUtils
.
CompareDate
(
price
.
StartDate
,
date
)
===
0
)
{
if
(
this
.
modifyTcid
>
0
)
{
if
(
price
.
TCID
==
this
.
modifyTcid
)
{
isExit
=
true
;
}
}
else
{
isExit
=
true
;
}
}
});
return
isExit
;
},
getstandardCurrencyName
()
{
let
isShow
=
true
this
.
companyList
.
forEach
(
x
=>
{
if
(
x
.
id
==
this
.
priceData
.
OutBranchId
&&
x
.
standardCurrencyId
>
0
)
{
this
.
standardCurrencyName
=
x
.
standardCurrencyName
isShow
=
false
}
})
if
(
isShow
)
{
this
.
standardCurrencyName
=
''
}
},
getCompanyList
()
{
//出团公司
this
.
apipost
(
"sellorder_post_GetBranchList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
companyList
=
res
.
data
.
data
;
this
.
getstandardCurrencyName
()
}
},
err
=>
{}
);
},
//选中航班选择框
getSelect
(
item
)
{
// if (this.PostConfig.LineId == 14 && item.DayNum != this.PostConfig.DayNum) {
// this.Error("团期行程天数和机票的行程天数不一致!请重新选择!");
// return;
// }
item
.
IsSelected
=
!
item
.
IsSelected
;
this
.
FinfoList
=
[];
this
.
selectFilghtList
.
forEach
(
x
=>
{
if
(
x
.
IsSelected
)
{
this
.
FinfoList
.
push
({
name
:
x
.
AlName
,
date
:
x
.
FlightDate
});
var
isExsit
=
false
;
this
.
priceData
.
AirticketBindList
.
forEach
(
y
=>
{
if
(
x
.
Id
==
y
.
PurchaseId
)
{
isExsit
=
true
;
y
.
BindNum
=
x
.
BindNum
;
}
});
if
(
!
isExsit
)
{
this
.
priceData
.
AirticketBindList
.
push
({
AirTicketId
:
x
.
AirticketId
,
BindNum
:
x
.
BindNum
,
ID
:
0
,
PurchaseId
:
x
.
Id
,
FlightDate
:
x
.
FlightDate
});
}
}
else
{
var
flag
=
true
;
for
(
var
i
=
0
;
i
<
this
.
priceData
.
AirticketBindList
.
length
;
i
++
)
{
if
(
this
.
priceData
.
AirticketBindList
[
i
].
PurchaseId
===
x
.
Id
&&
flag
)
{
flag
=
false
;
this
.
priceData
.
AirticketBindList
.
splice
(
i
,
1
);
}
}
}
});
this
.
priceData
.
AirticketBindList
.
sort
(
this
.
$commonUtils
.
createComprisonFunction
(
"FlightDate"
)
);
},
//改变输入框的值
getFlightBindNum
(
fitem
)
{
var
TotalSeat
=
parseInt
(
this
.
priceData
.
YSeat
)
+
parseInt
(
this
.
priceData
.
CSeat
)
+
parseInt
(
this
.
priceData
.
FSeat
);
if
(
Number
(
fitem
.
TicketNum
)
-
Number
(
fitem
.
OtherTeamUseNum
)
<
Number
(
fitem
.
BindNum
))
{
fitem
.
BindNum
=
0
;
this
.
Error
(
"最多只能绑定"
+
(
Number
(
fitem
.
TicketNum
)
-
Number
(
fitem
.
OtherTeamUseNum
))
+
"个机位"
);
}
this
.
selectFilghtList
.
forEach
((
x
,
index
)
=>
{
if
(
x
.
IsSelected
)
{
this
.
priceData
.
AirticketBindList
.
forEach
(
y
=>
{
if
(
x
.
Id
==
y
.
PurchaseId
)
{
y
.
BindNum
=
x
.
BindNum
;
}
});
}
});
},
//选中景点选择框
getScenic
(
item
)
{
item
.
IsChecked
=
!
item
.
IsChecked
;
this
.
initScenic
();
},
//初始化景点
initScenic
()
{
this
.
ScenicList
=
[];
this
.
priceData
.
ScenicBackList
.
forEach
(
x
=>
{
if
(
x
.
IsChecked
)
{
this
.
ScenicList
.
push
(
x
);
}
})
},
goUrl
(
path
,
id
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
"id"
:
id
,
blank
:
'y'
,
tab
:
'票务管理'
}
})
},
//检查机位数是否超过设置的可销售数量
CheckSellTicketNum
(
item
)
{
var
totalNum
=
0
;
if
(
item
.
YSeat
&&
item
.
YSeat
!=
''
)
{
totalNum
+=
Number
(
item
.
YSeat
);
}
if
(
item
.
CSeat
&&
item
.
CSeat
!=
''
)
{
totalNum
+=
Number
(
item
.
CSeat
);
}
if
(
item
.
FSeat
&&
item
.
FSeat
!=
''
)
{
totalNum
+=
Number
(
item
.
FSeat
);
}
var
canSellNum
=
0
;
if
(
item
.
CanSellTicketNum
&&
item
.
CanSellTicketNum
!=
''
)
{
canSellNum
=
Number
(
item
.
CanSellTicketNum
);
}
if
(
totalNum
<
canSellNum
)
{
this
.
Info
(
"可销售机票数量不能超过本团机位数!"
)
item
.
CanSellTicketNum
=
0
;
}
},
//每一天只能选择一个酒店
changeHotelStatus
(
item
,
index
)
{
item
.
CheckList
.
forEach
((
subItem
,
subIndex
)
=>
{
if
(
subIndex
!=
index
)
{
subItem
.
CheckStatus
=
false
;
}
});
},
//获取选择的酒店
changeHotelList
()
{
this
.
priceData
.
ChooseHotelArray
=
[];
if
(
this
.
priceData
.
PriceHotelList
!=
null
&&
this
.
priceData
.
PriceHotelList
.
length
>
0
)
{
this
.
priceData
.
PriceHotelList
.
forEach
(
x
=>
{
var
obj
=
{
HotelId
:
0
,
DayNum
:
0
}
if
(
x
.
NewHotelId
>
0
)
{
obj
.
HotelId
=
x
.
NewHotelId
;
obj
.
DayNum
=
x
.
DayNum
;
this
.
priceData
.
ChooseHotelArray
.
push
(
obj
);
}
else
{
x
.
CheckList
.
forEach
((
y
,
index
)
=>
{
if
(
y
.
CheckStatus
)
{
obj
.
HotelId
=
x
.
SubList
[
index
].
HotelId
;
obj
.
DayNum
=
x
.
SubList
[
index
].
DayNum
this
.
priceData
.
ChooseHotelArray
.
push
(
obj
);
}
})
}
});
if
(
this
.
priceData
.
ChooseHotelArray
!=
null
&&
this
.
priceData
.
ChooseHotelArray
.
length
>
0
)
{
this
.
priceData
.
IsNew
=
true
;
}
}
},
//保存酒店使用情况
saveHoteluseDetail
(
type
)
{
var
that
=
this
;
var
str
=
"是否确定提交选中的酒店?"
;
if
(
type
==
2
)
{
str
=
"是否同步行程酒店到地接?"
;
}
this
.
Confirm
(
str
,
function
()
{
if
(
that
.
isSaved
)
{
that
.
isSaved
=
false
;
that
.
$emit
(
"saveMsg"
);
}
if
(
type
==
2
)
{
that
.
btnTongBu
=
"同步酒店..."
;
}
else
{
that
.
btnText
=
'保存...'
;
}
});
},
//取消
cancelHotelUseDetail
()
{
this
.
priceData
.
IsNew
=
false
;
if
(
this
.
priceData
.
PriceHotelList
!=
null
&&
this
.
priceData
.
PriceHotelList
.
length
>
0
)
{
this
.
priceData
.
PriceHotelList
.
forEach
(
x
=>
{
x
.
NewHotelId
=
0
;
});
}
this
.
outerVisible
=
false
;
},
//关闭弹窗方法
closeHotelDialog
()
{
this
.
outerVisible
=
false
;
},
//保存完成初始化
initStatus
()
{
this
.
isSaved
=
true
;
this
.
btnText
=
'保存'
;
this
.
btnTongBu
=
"同步酒店"
;
},
//获取酒店信息
getHotelList
(
item
,
event
)
{
if
(
event
)
{
var
msg
=
{
Country
:
651
,
sDate
:
item
.
UseDay
,
IsMoreThanZero
:
1
};
this
.
apipost
(
"hotel_post_GetHasStockHotelListExt"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
item
.
HotelList
=
res
.
data
.
data
;
}
},
err
=>
{}
);
}
},
//获取少价信息
getLessPriceInfo
()
{
let
msg
=
{
RB_Branch_id
:
this
.
priceData
.
OutBranchId
,
LineID
:
this
.
PostConfig
.
LineId
,
LineTeamId
:
this
.
PostConfig
.
LineteamId
}
this
.
apipost
(
"sell_get_GetNewTCIDLessprice"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
lessPriceData
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
//删除占用的酒店库存信息
DeleteStock
(
item
)
{
var
that
=
this
;
this
.
Confirm
(
"是否此酒店库存信息?"
,
function
()
{
let
delMsg
=
{
hotelId
:
item
.
SubList
[
0
].
HotelId
,
TCID
:
item
.
TCID
,
useTime
:
item
.
SubList
[
0
].
JourneyDate
};
that
.
apipost
(
"hoteluse_post_DeleteHotelUse"
,
delMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
that
.
Success
(
"操作成功!"
);
item
.
SubList
[
0
].
UseCount
=
0
;
}
else
{
that
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
});
},
//根据日期返回星期几
getDayByDate
(
dateString
)
{
if
(
dateString
)
{
var
date
;
var
dateArray
=
dateString
.
split
(
"-"
);
date
=
new
Date
(
dateArray
[
0
],
parseInt
(
dateArray
[
1
]
-
1
),
dateArray
[
2
]);
return
"日一二三四五六"
.
charAt
(
date
.
getDay
());
}
},
//获取团队类型
getTeamList
()
{
this
.
apipost
(
"travel_get_GetTravelPriceTeamTypeList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
TeamListArr
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
uploadFileBtn
(
file
)
{
//上传
let
newArr
=
[];
newArr
.
push
(
file
.
file
)
let
path
=
"/Upload/Temporary/"
this
.
$message
.
info
(
this
.
$t
(
'tips.shangchuanzhong'
))
this
.
UploadSelfFileT
(
path
,
newArr
,
x
=>
{
this
.
priceData
.
PriceOfferUrl
=
this
.
domainManager
().
ViittoFileUrl
+
x
.
data
.
FilePath
;
this
.
priceData
.
PriceOfferName
=
x
.
data
.
SourceFileName
;
this
.
Success
(
this
.
$t
(
'tips.scchenggong'
))
});
},
//获取车辆列表
getBusList
()
{
this
.
apipost
(
"bus_get_GetBusTypePriceList"
,
{
IsHaveBusNum
:
1
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
busPriceList
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
}
},
mounted
()
{
var
dateObj
=
this
.
$calendarUtils
.
getCurrentDate
();
this
.
currentYear
=
dateObj
.
CurrentYear
;
this
.
currentMonth
=
dateObj
.
CurrentMonth
;
this
.
initCalendar
();
this
.
getCompanyList
();
this
.
getTravelSupplier
();
this
.
getTeamList
();
this
.
getBusList
();
},
watch
:
{
priceList
:
{
//深度监听,可监听到对象、数组的变化
handler
:
function
(
val
,
oldVal
)
{
this
.
returnPriceList
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
priceList
));
//当团期修改
if
(
this
.
modifyTcid
>
0
)
{
let
priceList
=
[];
this
.
returnPriceList
.
forEach
(
x
=>
{
if
(
x
.
TCID
==
this
.
modifyTcid
)
{
priceList
=
[];
x
.
ConfigID
=
0
;
priceList
.
push
(
x
);
}
});
if
(
priceList
.
length
>
0
)
this
.
returnPriceList
=
priceList
;
}
this
.
returnPriceList
.
sort
(
this
.
$commonUtils
.
createComprisonFunction
(
"StartDate"
)
);
this
.
returnPriceList
.
forEach
((
x
,
index
)
=>
{
if
(
index
==
0
)
{
this
.
priceData
=
this
.
returnPriceList
[
index
];
x
[
"Checked"
]
=
true
;
this
.
chooseDay
=
this
.
priceData
.
StartDate
;
this
.
initFlightData
();
this
.
initScenic
();
}
else
{
x
[
"Checked"
]
=
false
;
}
this
.
DateArr
.
push
(
x
.
StartDate
);
});
this
.
initCalendar
();
},
deep
:
true
},
returnPriceList
:
{
//深度监听,可监听到对象、数组的变化
handler
:
function
(
val
,
oldVal
)
{
this
.
initShowPriceList
();
this
.
$emit
(
"headCallBack"
,
this
.
returnPriceList
,
this
.
priceData
.
OutGroupType
);
},
deep
:
true
},
priceData
:
{
//深度监听,可监听到对象的变化
handler
:
function
(
val
,
oldVal
)
{
this
.
initShowPriceList
();
this
.
$emit
(
"headCallBack"
,
this
.
returnPriceList
,
this
.
priceData
.
OutGroupType
);
},
deep
:
true
},
//监听报价单日期
OfferList
:
{
//深度监听,可监听到对象、数组的变化
handler
:
function
(
val
,
oldVal
)
{
this
.
initCalendar
();
},
deep
:
true
}
},
components
:
{
TravelPriceFlightList
:
TravelPriceFlightList
,
commonPHInfo
:
commonPHlInfo
,
TravelPriceFlightListSelf
:
TravelPriceFlightList_Self
,
}
};
</
script
>
src/components/systemManagement/douyinTips.vue
0 → 100644
View file @
b59ed521
<
style
>
.LM_mainDiv
{
overflow-y
:
auto
;
}
.LP_table
{
margin-top
:
10px
;
background-color
:
#fff
;
border-top
:
1px
solid
#d1d1d1
;
/*border-left: 1px solid #d1d1d1;*/
/* border-right: 1px solid #d1d1d1; */
font-size
:
14px
;
width
:
100%
;
min-width
:
1200px
;
padding-bottom
:
5px
;
}
.LP_table
tr
{
height
:
40px
;
}
.LP_table
tr
th
{
border-left
:
1px
solid
#d1d1d1
;
border-bottom
:
1px
solid
#d1d1d1
;
/* border-right: 1px solid #d1d1d1; */
position
:
relative
;
background-color
:
#E6E6E6
;
}
.LP_table
tr
th
:last-child
{
border-right
:
1px
solid
#d1d1d1
;
}
.LP_table
td
{
border-left
:
1px
solid
#d1d1d1
;
border-bottom
:
1px
solid
#d1d1d1
;
/* border-right: 1px solid #d1d1d1; */
text-align
:
center
;
padding
:
5px
0
;
}
.LP_table
td
:last-child
{
border-right
:
1px
solid
#d1d1d1
;
}
.LP_table
.el-button--primary
{
padding
:
5px
;
}
.Lp_role
{
position
:
absolute
;
top
:
15px
;
left
:
30px
;
}
.Lp_company
{
position
:
absolute
;
right
:
30px
;
top
:
5px
;
}
.comLessDiv
{
width
:
100%
;
height
:
40px
;
margin-top
:
5px
;
padding-bottom
:
5px
;
border-bottom
:
1px
solid
#d1d1d1
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.comLessDiv
:last-child
{
border
:
0
;
padding-bottom
:
0
;
}
.comLessDiv
input
{
padding
:
0
5px
;
}
.comLessDiv
.el-input-group__append
,
.comLessDiv
.el-input-group__append
button
{
padding
:
0
8px
;
cursor
:
pointer
;
}
.addLessPrice
{
margin-left
:
10px
;
color
:
seagreen
;
cursor
:
pointer
;
}
.lessBtn
{
margin-top
:
5px
;
}
</
style
>
<
template
>
<div>
<div
class=
"LM_mainDiv"
>
<!--保存-->
<table
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
class=
"LP_table"
v-loading=
"this.loading"
>
<tr>
<th
width=
"40%"
>
项目名称
</th>
<th
width=
"150"
>
{{
$t
(
'hotel.table_operat'
)
}}
<i
class=
"iconfont icon-bumenguanli-tianjia addLessPrice"
@
click=
"addLessPrice(item)"
></i></th>
</tr>
<tr>
<td>
<div
v-for=
"subItem in dataList"
class=
"comLessDiv"
>
<el-input
placeholder=
"名称"
v-model=
"subItem.Name"
>
</el-input>
</div>
</td>
<td>
<div
v-for=
"(subItem,subIndex) in dataList"
class=
"comLessDiv"
>
<input
type=
'button'
class=
"normalBtn lessBtn"
@
click=
"SaveLessPrice(subItem)"
:value=
"$t('pub.saveBtn')"
/>
<input
type=
'button'
class=
"normalBtn lessBtn"
@
click=
"RemoveItem( subItem, subIndex)"
value=
"删除"
/>
</div>
</td>
</tr>
</table>
</div>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
//列表
dataList
:
[],
//角色列表
RoleList
:
[],
loading
:
false
,
LineList
:
[],
commonSelect
:
0
,
};
},
methods
:
{
//保存少价管理
SaveLessPrice
(
subItem
)
{
if
(
subItem
)
{
if
(
subItem
.
Name
.
length
==
0
)
{
return
this
.
Error
(
'请填写标记信息'
);
}
}
this
.
apipost
(
"dict_post_Set"
,
subItem
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
getList
();
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
//获取列表
getList
()
{
this
.
loading
=
true
;
var
that
=
this
;
that
.
apipost
(
"dict_post_GetList"
,
{
Key
:
'DouYin_MainOrder'
},
res
=>
{
that
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
var
data
=
res
.
data
.
data
;
that
.
dataList
=
data
;
}
else
{
that
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
//获取列表
RemoveItem
(
subItem
,
index
)
{
if
(
subItem
.
ID
==
0
)
{
this
.
dataList
.
splice
(
index
,
1
);
return
;
}
var
that
=
this
;
this
.
Confirm
(
"是否删除此标记信息?"
,
function
()
{
if
(
subItem
.
ID
>
0
)
{
that
.
apipost
(
"dict_post_Remove"
,
{
dictID
:
subItem
.
ID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
that
.
Success
(
"操作成功!"
);
that
.
getList
();
}
else
{
that
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
}
});
},
//点击添加
addLessPrice
()
{
var
obj
=
{
Name
:
''
,
DictKey
:
'DouYin_MainOrder'
,
ID
:
0
,
}
this
.
dataList
.
push
(
obj
);
this
.
$forceUpdate
()
}
},
mounted
()
{
this
.
getList
();
},
};
</
script
>
src/router/config.js
View file @
b59ed521
...
@@ -2204,6 +2204,14 @@ export default {
...
@@ -2204,6 +2204,14 @@ export default {
title
:
'单机票订单'
title
:
'单机票订单'
},
},
},
},
{
path
:
'/douyinOrder'
,
//抖音订单
name
:
'douyinOrder'
,
component
:
resolve
=>
require
([
'@/components/SingleAirTicket/douyinOrder'
],
resolve
),
meta
:
{
title
:
'抖音订单'
},
},
{
{
path
:
'/CharterAddEditVehicle'
,
//新增/编辑团订
path
:
'/CharterAddEditVehicle'
,
//新增/编辑团订
name
:
'CharterAddEditVehicle'
,
name
:
'CharterAddEditVehicle'
,
...
@@ -3822,6 +3830,13 @@ export default {
...
@@ -3822,6 +3830,13 @@ export default {
meta
:
{
meta
:
{
title
:
'奖励管理'
title
:
'奖励管理'
}
}
},
{
//奖励管理
path
:
'/douyinTips'
,
name
:
'douyinTips'
,
component
:
resolve
=>
require
([
'@/components/systemManagement/douyinTips'
],
resolve
),
meta
:
{
title
:
'抖音订单标记管理'
}
},
{
// 财务往来单据 收入确认单
},
{
// 财务往来单据 收入确认单
path
:
'/priceIncomeConfirmList'
,
path
:
'/priceIncomeConfirmList'
,
name
:
'priceIncomeConfirmList'
,
name
:
'priceIncomeConfirmList'
,
...
...
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