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
0bcad647
Commit
0bcad647
authored
Aug 18, 2025
by
吴春
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/superman
parents
71ca7eef
775853e4
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
4446 additions
and
238 deletions
+4446
-238
AddComplaints.vue
src/components/Complaints/AddComplaints.vue
+1
-1
ComplaintsDetail.vue
src/components/Complaints/ComplaintsDetail.vue
+2
-2
HandFeeStatistics.vue
src/components/FinancialModule/HandFee/HandFeeStatistics.vue
+12
-3
addOrder.vue
src/components/SalesModule/components/addOrder.vue
+21
-6
editOPRemarks.vue
src/components/SalesModule/components/editOPRemarks.vue
+574
-0
groupOrder.vue
src/components/SalesModule/components/groupOrder.vue
+33
-5
groupTourOrder.vue
src/components/SalesModule/groupTourOrder.vue
+30
-5
OrderList.vue
src/components/SingleAirTicket/components/OrderList.vue
+256
-46
TicketOrder.vue
src/components/SingleAirTicket/components/TicketOrder.vue
+35
-60
ticketOrderDialog.vue
...mponents/SingleAirTicket/components/ticketOrderDialog.vue
+3235
-0
TeamBalancePayment.vue
...omponents/TravelManager/TravelList/TeamBalancePayment.vue
+63
-3
TravelControlList.vue
...components/TravelManager/TravelList/TravelControlList.vue
+66
-58
TravelControlListSale.vue
...onents/TravelManager/TravelList/TravelControlListSale.vue
+91
-40
cruiseShipInfo.vue
src/components/cruiseShip/list/cruiseShipInfo.vue
+4
-2
cruiseShipListConfig.js
src/components/cruiseShip/list/cruiseShipListConfig.js
+1
-1
cruiseShipOrderList.vue
src/components/cruiseShip/list/cruiseShipOrderList.vue
+10
-4
order-remark.vue
src/components/orderCommon/order-remark.vue
+4
-2
config.js
src/router/config.js
+8
-0
No files found.
src/components/Complaints/AddComplaints.vue
View file @
0bcad647
...
...
@@ -226,7 +226,7 @@
</ul>
</div>
<div
v-if=
"userInfo.SimpleEasy==1"
>
<div
v-if=
"userInfo.SimpleEasy
&&userInfo.SimpleEasy
==1"
>
<p>
{{
$t
(
'fnc.scfujian'
)
}}
<span
class=
"_addUpload_tips"
>
{{
$t
(
'tips.wjdxbncgsz'
)
}}
</span></p>
<div
class=
"_addUpload_box clearfix"
>
...
...
src/components/Complaints/ComplaintsDetail.vue
View file @
0bcad647
...
...
@@ -418,7 +418,7 @@
<p
v-if=
"item.Level!=0"
>
{{item.Description}}
</p>
<
template
v-if=
"userInfo.SimpleEasy==1"
>
<
template
v-if=
"userInfo.SimpleEasy
&&userInfo.SimpleEasy
==1"
>
<div
class=
"_addUpload_box _addUpload_box_btm clearfix"
v-if=
"item.FileDataList.length>0"
>
<p>
{{
$t
(
'objFill.fj'
)
}}
</p>
<template
v-for=
"(file,fIndex) in item.FileDataList"
>
...
...
@@ -512,7 +512,7 @@
</el-select>
</td>
</tr>
<tr
v-if=
"userInfo.SimpleEasy==1"
><td>
<p>
{{$t('fnc.scfujian')}}
</p>
<tr
v-if=
"userInfo.SimpleEasy
&&userInfo.SimpleEasy
==1"
><td>
<p>
{{$t('fnc.scfujian')}}
</p>
<p
class=
"_addUpload_tips"
>
{{$t('tips.wjdxbncgsz')}}
</p></td><td>
<div>
...
...
src/components/FinancialModule/HandFee/HandFeeStatistics.vue
View file @
0bcad647
...
...
@@ -25,6 +25,14 @@
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
label=
"收入类型"
>
<el-select
filterable
v-model=
'msg.ImportType'
class=
""
>
<el-option
label=
'手配+R'
:value=
'1'
:key=
'1'
></el-option>
<el-option
label=
'转账手续费'
:value=
'2'
:key=
'2'
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"4"
>
<el-form-item
:label=
"$t('sm.company')"
>
<el-select
filterable
v-model=
'msg.RB_Branch_Id'
>
...
...
@@ -67,7 +75,7 @@
</el-form-item>
</el-col>
<template
v-if=
"heightQueryBox"
></
template
>
<el-col
:span=
"
6
"
>
<el-col
:span=
"
5
"
>
<el-form-item
:label=
"$t('fnc.zdriqi')"
>
<!-- <el-date-picker class="h34" @change="timeAdd(1)" v-model="productionDate" type="daterange"
value-format="yyyy-MM-dd">
...
...
@@ -75,14 +83,14 @@
<StartDateLimit
:clearable=
"false"
:dateTime=
"productionDate"
@
change=
"(startDate,endDate)=>{msg.sDate=startDate,msg.eDate=endDate}"
></StartDateLimit>
</el-form-item>
</el-col>
<el-col
:span=
"
6
"
>
<el-col
:span=
"
5
"
>
<el-form-item
:label=
"$t('fnc.jiaoyiriqi')"
>
<el-date-picker
class=
"h34"
v-model=
"transactionDate"
@
change=
"timeAdd(3)"
type=
"daterange"
value-format=
"yyyy-MM-dd"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col
:span=
"
6
"
>
<el-col
:span=
"
5
"
>
<el-form-item
:label=
"$t('scen.sc_ftTime')"
>
<el-date-picker
class=
"h34"
v-model=
"missionDate"
@
change=
"timeAdd(4)"
type=
"daterange"
value-format=
"yyyy-MM-dd"
>
...
...
@@ -293,6 +301,7 @@
Status
:
'-1'
,
//状态
KingdeeBranchId
:
0
,
//当前登录人的公司
HandFeeFrId
:
0
,
ImportType
:
1
},
isRB_Depart_Id
:
false
,
getCompanyMsg
:
{
// 公司
...
...
src/components/SalesModule/components/addOrder.vue
View file @
0bcad647
...
...
@@ -623,9 +623,9 @@
</el-col>
<el-col
:span=
"6"
>
<el-form-item
:label=
"$t('salesModule.SingleFM')"
>
<el-radio
v-model=
"addMsg.OneSex"
label=
"1
"
>
{{
$t
(
"pub.man"
)
}}
<el-radio
v-model=
"addMsg.OneSex"
:label=
"Number(1)
"
>
{{
$t
(
"pub.man"
)
}}
</el-radio>
<el-radio
v-model=
"addMsg.OneSex"
label=
"2
"
>
{{
$t
(
"pub.woman"
)
}}
<el-radio
v-model=
"addMsg.OneSex"
:label=
"Number(2)
"
>
{{
$t
(
"pub.woman"
)
}}
</el-radio>
</el-form-item>
</el-col>
...
...
@@ -1502,7 +1502,6 @@
ID
:
s
.
supplierId
,
Name
:
s
.
supplierName
,
})
console
.
log
(
this
.
deepFirstLetterToLower
(
newVal
.
guestList
),
'====='
)
setTimeout
(()
=>
{
let
obj
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
addMsg
))
...
...
@@ -1511,6 +1510,7 @@
OrderId
:
newVal
.
orderId
,
// 订单号
Meet
:
newVal
.
meet
,
// 成本
Remarks
:
newVal
.
remarks
,
// 订单备注
UnionRemark
:
newVal
.
unionRemark
,
Mobile
:
newVal
.
mobile
,
// 联系手机号
DisplaySupplierId
:
s
.
supplierId
,
SupplierId
:
s
.
supplierId
,
// 供应商id
...
...
@@ -1522,8 +1522,10 @@
CompanyPhone
:
s
.
companyPhone
,
// 电话
OpeningBank
:
s
.
openingBank
,
// 开户行
BankNo
:
s
.
bankNo
,
// 开户账号
AppointOPList
:
newVal
.
appointOPList
,
// op 格式:([1,2,3])
GuestList
:
this
.
deepFirstLetterToLower
(
newVal
.
guestList
),
// 旅客名单
AppointOPList
:
newVal
.
appointOPList
.
map
(
item
=>
{
return
item
.
opId
}),
// op 格式:([1,2,3])
GuestList
:
[],
// 旅客名单
FinalPriceTips
:
newVal
.
finalPriceTips
,
// 尾款提醒设置
...
...
@@ -1547,13 +1549,26 @@
TripleRoomNum
:
newVal
.
tripleRoomNum
,
VisaNum
:
newVal
.
visaNum
,
SafeNum
:
newVal
.
safeNum
,
OneSex
Num
:
newVal
.
oneSexNum
,
OneSex
:
newVal
.
oneSex
,
PredictRoomNum
:
newVal
.
predictRoomNum
,
YSeatNum
:
newVal
.
ySeatNum
,
ESeatNum
:
newVal
.
eSeatNum
,
FSeatNum
:
newVal
.
fSeatNum
,
WordPath
:
newVal
.
wordPath
,
//附件
};
newVal
.
guestList
.
forEach
(
item
=>
{
this
.
addMsg
.
GuestList
.
push
({
Birthday
:
item
.
birthday
,
// 生日
Name
:
item
.
userName
,
// 名称
IdCard
:
item
.
idCard
,
// 身份证号
PassportNo
:
item
.
passportNo
,
// 护照号
PassportIssued
:
item
.
passportIssued
,
// 护照签发日期
PassportExpiry
:
item
.
passportExpiry
,
// 护照有效期
Tel
:
item
.
tel
,
// 联系电话
})
})
console
.
log
(
newVal
,
'======='
)
},
1000
)
}
}
...
...
src/components/SalesModule/components/editOPRemarks.vue
0 → 100644
View file @
0bcad647
<
style
>
@import
"../../../assets/css/DMC.css"
;
.drawer-mode
{
display
:
flex
;
height
:
100%
;
flex-direction
:
column
;
}
/* 抽屉模式下的样式优化 */
.drawer-mode
.changInfo
{
padding
:
0
;
margin
:
0
;
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
}
.drawer-mode
.resource-content
{
padding
:
0
;
flex
:
1
;
overflow
:
hidden
;
margin
:
0
!important
;
}
.drawer-mode
.hotel-form-container
{
width
:
100%
;
height
:
100%
;
display
:
flex
;
flex-direction
:
column
;
}
/* Tabs 样式优化 */
.drawer-mode
.hotel-tabs
{
flex
:
1
;
display
:
flex
;
flex-direction
:
column
;
border
:
none
;
box-shadow
:
none
;
overflow
:
hidden
;
}
.drawer-mode
.hotel-tabs
.el-tabs__header
{
margin
:
0
;
background
:
#f8f9fa
;
border-bottom
:
1px
solid
#e8e8e8
;
}
.drawer-mode
.hotel-tabs
.el-tabs__nav-wrap
{
padding
:
0
20px
;
}
.drawer-mode
.hotel-tabs
.el-tabs__item
{
height
:
40px
;
line-height
:
40px
;
font-size
:
13px
;
font-weight
:
500
;
color
:
#595959
;
border
:
none
;
padding
:
0
20px
;
}
.drawer-mode
.hotel-tabs
.el-tabs__item.is-active
{
color
:
#1890ff
;
background
:
#fff
;
border-bottom
:
2px
solid
#1890ff
;
}
.drawer-mode
.hotel-tabs
.el-tabs__content
{
flex
:
1
;
overflow-y
:
auto
;
padding
:
0
;
}
.drawer-mode
.hotel-tabs
.el-tab-pane
{
height
:
100%
;
}
/* Tab 内容区域 */
.drawer-mode
.tab-content
{
padding
:
20px
;
height
:
100%
;
overflow-y
:
auto
;
}
.drawer-mode
.tab-content.hidden
{
overflow
:
hidden
;
display
:
flex
;
flex-direction
:
column
;
}
/* 表单样式优化 */
.drawer-mode
.el-form
{
padding
:
0
;
}
.drawer-mode
.el-form-item
{
margin-bottom
:
16px
;
}
.drawer-mode
.el-form-item__label
{
font-size
:
13px
;
font-weight
:
500
;
line-height
:
32px
;
color
:
#262626
;
/* width: 120px !important; */
}
/* 输入框和下拉框优化 */
.drawer-mode
.el-input
,
.drawer-mode
.el-select
{
width
:
100%
;
}
.drawer-mode
.el-input__inner
,
.drawer-mode
.el-select
.el-input__inner
{
height
:
32px
;
line-height
:
32px
;
font-size
:
13px
;
border
:
1px
solid
#d9d9d9
;
border-radius
:
4px
;
transition
:
all
0.2s
ease
;
}
.drawer-mode
.el-input__inner
:focus
,
.drawer-mode
.el-select
.el-input__inner
:focus
{
border-color
:
#1890ff
;
box-shadow
:
0
0
0
2px
rgba
(
24
,
144
,
255
,
0.2
);
}
.drawer-mode
.el-textarea__inner
{
font-size
:
13px
;
border
:
1px
solid
#d9d9d9
;
border-radius
:
4px
;
min-height
:
60px
;
}
.drawer-mode
.el-textarea__inner
:focus
{
border-color
:
#1890ff
;
box-shadow
:
0
0
0
2px
rgba
(
24
,
144
,
255
,
0.2
);
}
/* 日期选择器优化 */
.drawer-mode
.el-date-editor
{
width
:
100%
;
}
.drawer-mode
.el-date-editor
.el-input__inner
{
height
:
32px
;
line-height
:
32px
;
}
/* 联系人区域样式 */
.drawer-mode
.contact-header
{
margin-bottom
:
20px
;
padding-bottom
:
10px
;
border-bottom
:
1px
solid
#e8e8e8
;
text-align
:
right
;
}
.drawer-mode
.contact-list
{
flex
:
1
;
overflow-y
:
auto
;
}
.drawer-mode
.contact-item
{
margin-bottom
:
12px
;
padding
:
12px
;
background
:
#fafbfc
;
border
:
1px
solid
#e8e8e8
;
border-radius
:
6px
;
position
:
relative
;
display
:
flex
;
align-items
:
start
;
padding-bottom
:
0
;
}
.drawer-mode
.contact-item
.el-form-item__content
{
margin-left
:
0px
!important
;
}
/* 上传区域样式 */
.drawer-mode
.upload-section
{
display
:
flex
;
flex-direction
:
column
;
gap
:
8px
;
}
.drawer-mode
.upload-section
a
{
color
:
#1890ff
;
text-decoration
:
none
;
font-size
:
13px
;
margin-right
:
8px
;
display
:
inline-block
;
margin-bottom
:
4px
;
}
.drawer-mode
.upload-section
a
:hover
{
color
:
#40a9ff
;
text-decoration
:
underline
;
}
/* 按钮区域优化 */
.drawer-mode
.btn-list
{
position
:
sticky
;
bottom
:
0
;
background
:
#fff
;
padding
:
16px
20px
;
border-top
:
1px
solid
#e8e8e8
;
margin
:
0
;
z-index
:
100
;
box-shadow
:
0
-2px
8px
rgba
(
0
,
0
,
0
,
0.1
);
}
.drawer-mode
.btn-actions
{
display
:
flex
;
justify-content
:
flex-end
;
gap
:
12px
;
}
.drawer-mode
.save-Btn
,
.drawer-mode
.cancel-Btn
{
height
:
36px
;
padding
:
0
20px
;
font-size
:
14px
;
border-radius
:
4px
;
cursor
:
pointer
;
border
:
1px
solid
;
transition
:
all
0.2s
ease
;
}
.drawer-mode
.save-Btn
{
background
:
#1890ff
;
border-color
:
#1890ff
;
color
:
#fff
;
}
.drawer-mode
.save-Btn
:hover
{
background
:
#40a9ff
;
border-color
:
#40a9ff
;
}
.drawer-mode
.save-Btn
:disabled
{
background
:
#d9d9d9
;
border-color
:
#d9d9d9
;
color
:
#bfbfbf
;
cursor
:
not-allowed
;
}
.drawer-mode
.save-Btn
:disabled:hover
{
background
:
#d9d9d9
;
border-color
:
#d9d9d9
;
}
.drawer-mode
.cancel-Btn
{
background
:
#fff
;
border-color
:
#d9d9d9
;
color
:
#595959
;
}
.drawer-mode
.cancel-Btn
:hover
{
background
:
#f5f5f5
;
border-color
:
#40a9ff
;
color
:
#40a9ff
;
}
/* 上传按钮优化 */
.drawer-mode
.el-button--small
{
height
:
28px
;
padding
:
0
12px
;
font-size
:
12px
;
border-radius
:
4px
;
}
.drawer-mode
.el-button--primary.el-button--small
{
background
:
#1890ff
;
border-color
:
#1890ff
;
}
.drawer-mode
.el-button--primary.el-button--small
:hover
{
background
:
#40a9ff
;
border-color
:
#40a9ff
;
}
/* 滚动条样式 */
.drawer-mode
.tab-content
::-webkit-scrollbar
{
width
:
6px
;
}
.drawer-mode
.tab-content
::-webkit-scrollbar-track
{
background-color
:
#f6f8fa
;
border-radius
:
3px
;
}
.drawer-mode
.tab-content
::-webkit-scrollbar-thumb
{
background-color
:
#d0d7de
;
border-radius
:
3px
;
}
.drawer-mode
.tab-content
::-webkit-scrollbar-thumb:hover
{
background-color
:
#8c959f
;
}
/* 加载状态样式 */
.loading-container
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
min-height
:
300px
;
padding
:
40px
;
}
.loading-content
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
text-align
:
center
;
}
.loading-content
.el-loading-spinner
{
margin-bottom
:
16px
;
}
.loading-content
.el-loading-spinner
.circular
{
width
:
32px
;
height
:
32px
;
color
:
#1890ff
;
}
.loading-content
p
{
color
:
#666
;
font-size
:
14px
;
margin
:
0
;
}
/* 错误状态样式 */
.error-container
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
min-height
:
300px
;
padding
:
40px
;
}
.error-content
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
text-align
:
center
;
max-width
:
400px
;
}
.error-content
.el-icon-warning
{
font-size
:
48px
;
color
:
#f56c6c
;
margin-bottom
:
16px
;
}
.error-content
.error-title
{
color
:
#f56c6c
;
font-size
:
16px
;
font-weight
:
500
;
margin
:
0
0
8px
0
;
}
.error-content
.error-message
{
color
:
#666
;
font-size
:
14px
;
margin
:
0
0
20px
0
;
line-height
:
1.5
;
}
.error-actions
{
display
:
flex
;
gap
:
12px
;
}
.error-actions
.el-button
{
min-width
:
80px
;
}
/* 响应式优化 */
@media
(
max-width
:
1200px
)
{
.drawer-mode
.el-col
[
class
*=
"span-6"
]
{
width
:
50%
!important
;
}
.drawer-mode
.el-col
[
class
*=
"span-4"
]
{
width
:
33.333%
!important
;
}
}
@media
(
max-width
:
768px
)
{
.drawer-mode
.el-col
[
class
*=
"span-"
]
{
width
:
100%
!important
;
}
.drawer-mode
.tab-content
{
padding
:
16px
;
}
.drawer-mode
.el-form-item__label
{
width
:
100px
!important
;
}
.loading-container
,
.error-container
{
min-height
:
200px
;
padding
:
20px
;
}
.error-actions
{
flex-direction
:
column
;
width
:
100%
;
}
.error-actions
.el-button
{
width
:
100%
;
}
}
.cruiseShipInfo
{
display
:
flex
;
flex-direction
:
row
;
}
</
style
>
<
template
>
<div
class=
"flexOne changInfo"
:class=
"
{ 'drawer-mode': isDrawerMode }">
<div
class=
"resource-content clearfix"
>
<el-form
:model=
"addMsg"
:rules=
"rules"
class=
"h-full"
ref=
"addMsg"
label-width=
"0"
>
<div
class=
"hotel-form-container h-full"
>
<el-tabs
v-model=
"activeTab"
type=
"border-card"
class=
"hotel-tabs"
>
<el-tab-pane
label=
"OP备注"
name=
"basic"
>
<div
class=
"tab-content"
>
<el-row
:gutter=
"16"
>
<el-col
:span=
"19"
>
<el-form-item
label=
""
>
<el-input
type=
"textarea"
v-model=
"addMsg.OP_Remarks"
placeholder=
"请输入OP备注"
:autosize=
"
{ minRows: 10, maxRows: 20}">
</el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</el-tab-pane>
</el-tabs>
</div>
</el-form>
</div>
<div
class=
"btn-list"
>
<div
class=
"btn-actions"
>
<button
class=
"save-Btn"
@
click=
"submitForm('addMsg')"
:disabled=
"isSaving"
>
<i
v-if=
"isSaving"
class=
"el-icon-loading"
style=
"margin-right: 4px;"
></i>
{{
isSaving
?
''
:
$t
(
'pub.saveBtn'
)
}}
</button>
<button
class=
"cancel-Btn"
@
click=
"goUrl('HotelManagement')"
>
{{
isDrawerMode
?
'关闭'
:
$t
(
'pub.cancelBtn'
)
}}
</button>
</div>
</div>
</div>
</
template
>
<
script
>
import
DMCchooseImg
from
"../../commonPage/DMCchooseImg.vue"
;
import
{
listManagerMixin
}
from
"../../common/mixins/listManagerMixin.js"
;
export
default
{
mixins
:
[
listManagerMixin
],
props
:
{
itemId
:
{
type
:
[
String
,
Number
],
default
:
0
},
details
:
{
type
:
Object
,
default
:
()
=>
{}
},
isDrawerMode
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
activeTab
:
'basic'
,
addMsg
:
{
OrderId
:
0
,
// 订单号
OP_Remarks
:
''
,
// 订单备注
},
rules
:
{
OP_Remarks
:
[{
required
:
true
,
message
:
'请输入OP备注'
,
trigger
:
"blur"
}],
},
CruiseShipList
:
[],
//邮轮
CSloading
:
false
,
RoomTypeList
:
[],
//房型
RTloading
:
false
,
SupplierList
:
[],
//供应商
SPloading
:
false
,
isSaving
:
false
,
};
},
watch
:
{
details
:
{
deep
:
true
,
immediate
:
true
,
handler
(
newVal
)
{
if
(
newVal
&&
newVal
.
orderId
!==
this
.
addMsg
.
OrderId
)
{
this
.
addMsg
.
OrderId
=
newVal
.
orderId
;
}
}
}
},
components
:
{
},
methods
:
{
submitForm
(
addMsg
)
{
//提交创建、修改表单
let
that
=
this
;
that
.
$refs
[
addMsg
].
validate
(
valid
=>
{
if
(
valid
)
{
that
.
saveResource
();
}
else
{
return
false
;
}
});
},
saveResource
()
{
// 防重复提交
if
(
this
.
isSaving
)
{
return
;
}
this
.
isSaving
=
true
;
this
.
apipost
(
"sellorder_get_SetOrderOPRemarks"
,
this
.
addMsg
,
response
=>
{
this
.
isSaving
=
false
;
//修改添加接口
if
(
response
.
data
.
resultCode
==
1
)
{
this
.
Success
(
this
.
$t
(
'tips.saveYes'
))
if
(
this
.
isDrawerMode
)
{
this
.
$emit
(
'save-success'
)
}
else
{
this
.
goUrl
(
"HotelManagement"
)
}
}
else
{
this
.
Error
(
response
.
data
.
message
)
}
},
error
=>
{
this
.
isSaving
=
false
;
this
.
Error
(
'保存失败,请检查网络连接'
);
}
)
},
goUrl
(
path
)
{
if
(
this
.
isDrawerMode
)
{
this
.
$emit
(
'close'
)
}
else
{
this
.
$router
.
push
({
path
:
path
,
query
:
{
cache
:
true
}
})
}
},
}
};
</
script
>
src/components/SalesModule/components/groupOrder.vue
View file @
0bcad647
...
...
@@ -297,6 +297,18 @@
<el-tooltip
effect=
"dark"
:content=
"$t('pub.more')"
placement=
"top-start"
style=
"float: left"
>
<el-popover
width=
"100"
trigger=
"hover"
>
<div
class=
"groupTourOrder_more"
>
<div
@
click=
"
goTeamBalance(
'TeamBalancePayment',
item.tcid,
item.outBranchId
)
"
>
{{ $t("Operation.Op_shouzhiDetail") }}
</div>
<div
v-if=
"isOP"
@
click=
"getRemarks(item,1)"
>
修改op备注
</div>
<div
@
click=
"goUrlT('confirmationOrder', item.orderId)"
>
{{ $t("salesModule.QRH")
}}{{
...
...
@@ -417,6 +429,7 @@
"
>
{{ $t("salesModule.LookTourse") }}
</div>
</div>
<el-button
slot=
"reference"
type=
"primary"
style=
"
background: #297bef;
...
...
@@ -453,6 +466,10 @@
<span
v-if=
"item.photoNum > 0"
>
({{ $t("salesModule.NoPhoto") }} {{ item.photoNum
}}{{ $t("salesModule.Fen") }})
</span>
</span>
<span
class=
"RL-remarkTitle"
v-if=
"item.appointOPList.length > 0"
>
OP:
</span>
<span
class=
"RL-redType RL-remarkCon"
v-if=
"item.appointOPList.length > 0"
>
<span
v-for=
"childItem in item.appointOPList"
style=
"color: blue;margin-right: 5px"
>
{{ childItem.opName }}
</span>
</span>
<p
v-if=
"item.cancelGuestList.length > 0"
>
<span
class=
""
>
{{ $t("salesModule.CancelOrder") }}:
</span>
<span
class=
"RL-redType RL-remarkCon"
>
...
...
@@ -712,7 +729,8 @@ import PriceDetail from '../../orderCommon/PriceDetail.vue';
export
default
{
name
:
'groupOrder'
,
mixins
:
[
userMixin
],
props
:
[
'list'
,
'orderList'
,
'logList'
,
'redBagList'
,
'qjGroupId'
,
'isShow'
,
'showID'
,
'TransferMission'
,
'isEditOrderCreate'
],
props
:
[
'list'
,
'orderList'
,
'logList'
,
'redBagList'
,
'qjGroupId'
,
'isShow'
,
'showID'
,
'TransferMission'
,
'isEditOrderCreate'
,
'isOP'
],
components
:
{
payurlItem
:
payURL
,
payurlItem1
:
payURL1
,
...
...
@@ -725,8 +743,6 @@ export default {
data
()
{
return
{
dataList
:
[],
showType
:
1
,
selectedSpotData
:
null
,
}
},
...
...
@@ -753,6 +769,18 @@ export default {
},
methods
:
{
goTeamBalance
(
path
,
id
,
OutBranchId
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
id
:
id
,
OutBranchId
:
OutBranchId
,
IsHaveAuth
:
true
,
blank
:
"y"
,
tab
:
"团队收支明细"
,
},
});
},
goIisDetail
(
id
)
{
this
.
$emit
(
'goIisDetail'
,
id
)
},
...
...
@@ -813,8 +841,8 @@ export default {
getLogDetail
(
obj
)
{
this
.
$emit
(
'getLogDetail'
,
obj
)
},
getRemarks
(
obj
)
{
this
.
$emit
(
'getRemarks'
,
obj
)
getRemarks
(
obj
,
type
)
{
this
.
$emit
(
'getRemarks'
,
obj
,
type
)
},
getDetail
(
obj
)
{
this
.
$emit
(
'getDetail'
,
obj
)
...
...
src/components/SalesModule/groupTourOrder.vue
View file @
0bcad647
...
...
@@ -1647,7 +1647,7 @@
</el-popover>
</li>
<li>
<input
v-if=
"userInfo.SimpleEasy==1"
type=
"button"
class=
"hollowFixedBtn"
:value=
"$t('pub.addBtn')"
@
click=
"addOrders"
/>
<input
v-if=
"userInfo.SimpleEasy
&&userInfo.SimpleEasy
==1"
type=
"button"
class=
"hollowFixedBtn"
:value=
"$t('pub.addBtn')"
@
click=
"addOrders"
/>
<input
type=
"button"
class=
"hollowFixedBtn"
:value=
"$t('pub.searchBtn')"
@
click=
"
getList();
resetPageIndex();
...
...
@@ -1774,9 +1774,10 @@
</div>
<!-- 表格 -->
<div
style=
"width: 100%; height: auto; overflow-x: auto"
class=
"ownScrollbarStyle"
v-loading=
"loading"
>
<groupOrder
v-if=
"userInfo.SimpleEasy==1"
:list=
"list"
:orderList=
"orderList"
<groupOrder
v-if=
"userInfo.SimpleEasy
&&userInfo.SimpleEasy
==1"
:list=
"list"
:orderList=
"orderList"
:logList=
"logList"
:redBagList=
"redBagList"
:qjGroupId=
"qjGroupId"
:isShow=
"isShow"
:showID=
"showID"
:TransferMission=
"TransferMission"
:isEditOrderCreate=
"isEditOrderCreate"
:isOP=
"isOP"
@
goIisDetail=
"goIisDetail"
@
goUrlTS=
"goUrlTS"
@
goContract=
"goContract"
@
goSingleContract=
"goSingleContract"
@
goProtocol=
"goProtocol"
@
goDisclaimer=
"goDisclaimer"
@
goInvetig=
"goInvetig"
@
SpecialAPP=
"SpecialAPP"
@
deleteItem=
"deleteItem"
...
...
@@ -2707,6 +2708,9 @@
<addOrder
v-if=
"visible&&showType==1"
:isDrawerMode=
"true"
:details=
"selectedSpotData"
@
close=
"close"
@
save-success=
"handleSaveSuccess"
></addOrder>
<editOPRemarks
v-if=
"visible&&showType==2"
:isDrawerMode=
"true"
:details=
"selectedSpotData"
@
close=
"close"
@
save-success=
"handleSaveSuccess"
></editOPRemarks>
</
template
>
</pinkDrawer>
</div>
...
...
@@ -2726,6 +2730,7 @@
import
addOrder
from
'./components/addOrder.vue'
;
import
addConfig
from
"./components/addConfig.js"
;
import
groupOrder
from
"./components/groupOrder.vue"
;
import
editOPRemarks
from
"./components/editOPRemarks.vue"
;
export
default
{
data
()
{
return
{
...
...
@@ -3065,7 +3070,8 @@
LessRule
:
[],
LessNPrice
:
0
,
LessNAvgPrice
:
0
,
DealDiscountMoney
:
0
DealDiscountMoney
:
0
,
isOP
:
0
,
};
},
components
:
{
...
...
@@ -3080,6 +3086,7 @@
pinkDrawer
,
addOrder
,
groupOrder
,
editOPRemarks
,
},
filters
:
{
priceFormat
(
value
)
{
...
...
@@ -3099,6 +3106,15 @@
SQcheckdAll
(
val
)
{
this
.
checkdAll
(
val
);
},
'$router'
:
{
handler
(
val
)
{
if
(
this
.
$route
.
query
.
isOP
)
this
.
isOP
=
this
.
$route
.
query
.
isOP
else
this
.
isOP
=
0
this
.
getList
();
this
.
getCount
()
}
}
},
computed
:
{
// 抽屉配置
...
...
@@ -3108,6 +3124,7 @@
},
methods
:
{
addOrders
()
{
this
.
selectedSpotData
=
null
this
.
$refs
.
addOrders
.
openDrawer
();
},
handleSaveSuccess
()
{
...
...
@@ -3944,7 +3961,13 @@
childByValue
(
data
)
{
this
.
showID
=
data
;
},
getRemarks
(
obj
)
{
getRemarks
(
obj
,
type
)
{
if
(
type
&&
type
==
1
&&
this
.
userInfo
.
SimpleEasy
&&
this
.
userInfo
.
SimpleEasy
==
1
){
this
.
showType
=
2
this
.
selectedSpotData
=
obj
;
this
.
$refs
.
addOrders
.
openDrawer
(
obj
);
return
;
}
// 华国豪5-5新增
if
(
moment
().
format
(
"YYYY-MM-DD"
)
>=
obj
.
startDate
)
{
// 该团目前已是结团状态,不能随意修改备注信息,若强行修改备注,将会计入个人考核,是否确定修改备注信息?
...
...
@@ -3976,7 +3999,7 @@
}
},
getDetail
(
obj
)
{
if
(
this
.
userInfo
.
SimpleEasy
==
1
){
if
(
this
.
userInfo
.
SimpleEasy
&&
this
.
userInfo
.
SimpleEasy
==
1
){
this
.
OperationType
=
1
this
.
showType
=
1
obj
.
OperationType
=
1
...
...
@@ -5487,6 +5510,8 @@
}
},
mounted
()
{
if
(
this
.
$route
.
query
.
isOP
)
this
.
isOP
=
this
.
$route
.
query
.
isOP
else
this
.
isOP
=
0
this
.
qjGroupId
=
this
.
QjGroupId
();
this
.
GetEditOrderCreateByAuth
();
let
userInfo
=
this
.
getLocalStorage
();
...
...
src/components/SingleAirTicket/components/OrderList.vue
View file @
0bcad647
...
...
@@ -457,7 +457,7 @@
}
.orderop
div
{
width
:
10
0px
;
width
:
6
0px
;
height
:
50%
;
display
:
flex
;
justify-content
:
center
;
...
...
@@ -608,15 +608,17 @@
</div>
</div>
<div
class=
"c9e fz12"
>
<span>
{{
$t
(
'objFill.guestinfor'
)
}}
:
{{
item
.
GuestName
}}
<template
v-if=
"item.MobilePhone"
>
/
{{
item
.
MobilePhone
}}
</
template
>
</span>
<span
v-if=
"userInfo.SimpleEasy&&userInfo.SimpleEasy==1"
>
供应商:
{{
item
.
SupplierModel
.
SupplierName
+
'/'
+
item
.
SupplierModel
.
CompanyPhone
}}
</span>
<span
v-else
>
{{
$t
(
'objFill.guestinfor'
)
}}
:
{{
item
.
GuestName
}}
<template
v-if=
"item.MobilePhone"
>
/
{{
item
.
MobilePhone
}}
</
template
>
</span>
<
template
v-if=
"item.ContractNum&&item.ContractNum.length>0"
>
<template
v-for=
"(sItem,sIndex) in item.ContractNum"
>
<a
@
click=
"GoToContract(item,sItem.Id)"
style=
"color:blue;cursor:pointer"
>
{{
sItem
.
ContractNum
}}
</a>
</
template
>
</template>
<
a
v-else
style=
"color:blue;cursor:pointer"
@
click=
"GoToContract(item,0)"
>
{{$t('objFill.chujinghet')}}
</a
>
<
!-- <a v-else style="color:blue;cursor:pointer" @click="GoToContract(item,0)">{{$t('objFill.chujinghet')}}</a> --
>
</div>
<div
class=
"row c9e fz12"
>
<span
class=
"mr"
v-if=
"userInfo.SimpleEasy&&userInfo.SimpleEasy==1"
>
OP:{{ item.AppointOPList.map(x=>x.OPName).join(',') }}
</span>
<span
class=
"mr"
v-if=
"item.LureEmpName"
>
{{$t('objFill.yinliuren')}}:{{ item.CreateByName }}
</span>
<span>
{{$t('visaT.sale')}}:
</span>
<span
class=
"mr"
>
...
...
@@ -674,6 +676,11 @@
{{
scope
.
row
.
IncomeMoney
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('fnc.shouxufei')"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
TaxMoney
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('fnc.ztjine')"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
PlatformMoney
}}
...
...
@@ -684,14 +691,14 @@
{{
scope
.
row
.
BackMoney
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('hotel.hotel_cost')
"
>
<el-table-column
label=
"应付
"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
PayMoney
}}
{{
scope
.
row
.
Meet
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('
fnc.shouxufei
')"
>
<el-table-column
:label=
"$t('
hotel.hotel_cost
')"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
Tax
Money
}}
{{
scope
.
row
.
Pay
Money
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('op.Tocollected')"
>
...
...
@@ -712,7 +719,7 @@
</div>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('salesModule.TicketStatus')"
style=
"background:#EAEAEA"
>
<
!-- <
el-table-column :label="$t('salesModule.TicketStatus')" style="background:#EAEAEA">
<template slot-scope="scope">
<span @click="scope.row.TicketStatusName!='无需机票'?modifyStatus(scope.row):''" class="cp tatusText" :class="item.TicketStatus==1?'grey':
(scope.row.TicketStatus==2?'success':
...
...
@@ -722,8 +729,8 @@
{{item.TicketStatusName}}
</span>
</template>
</el-table-column>
<el-table-column
:label=
"$t('visa.v_qianzhengst')"
style=
"background:#EAEAEA"
>
</el-table-column>
-->
<
!-- <
el-table-column :label="$t('visa.v_qianzhengst')" style="background:#EAEAEA">
<template slot-scope="scope">
<span @click="scope.row.VisaStatus=='1'?AmendVisa(scope.row):''" class="tatusText" :class="scope.row.VisaStatus==1?'grey'+' cursor-pointer':
(scope.row.VisaStatus==2?'success':
...
...
@@ -733,9 +740,19 @@
<i v-if="scope.row.VisaStatus==2" class="c3FC4FF cursor-pointer el-icon-document-checked"
@click="CheckOutDetails(scope.row)"></i>
</template>
</el-table-column>
<
template
slot=
"append"
v-if=
"item.Remark"
>
</el-table-column> -->
<
template
slot=
"append"
v-if=
"userInfo.SimpleEasy&&userInfo.SimpleEasy==1"
>
<div
style=
"padding:10px;color:#f1416c"
><ul
style=
"display: flex; flex-wrap: wrap;"
>
旅客名单:
<li
v-for=
"(mitem,mindex) in item.OrderGuestList"
:key=
"mindex"
style=
"margin-left:10px"
><el-tag
size=
"mini"
>
{{
mitem
.
Name
}}
</el-tag></li>
</ul></div>
</
template
>
<
template
slot=
"append"
>
<div
style=
"padding:10px;color:#f1416c"
>
{{
$t
(
'objFill.v101.busManagement.kehubeiz'
)
}}
:
{{
item
.
Remark
}}
</div>
<div
style=
"padding:10px;color:#f1416c"
v-if=
"item.OPRemark||pagesTitle=='OP'"
>
OP
{{
$t
(
'fnc.beizhu'
)
}}{{
item
.
OPRemark
}}
<i
v-if=
"pagesTitle=='OP'"
class=
"el-icon-edit cursor-pointer c059FF6 mx"
@
click=
"editRemark(item)"
></i>
</div>
</
template
>
</el-table>
</div>
...
...
@@ -743,36 +760,55 @@
<div
class=
"column px15 bgf5 radius5 flex-g pa relative"
>
<div
class=
"fz12"
>
{{$t('objFill.collectiondocument')}}
</div>
<div
class=
"row wrap orderNo fz12 py"
>
<span
class=
"cursor-pointer radius5 mr px5"
:class=
"{'bgD9F3FF':x.Status==
0,'bgFAEAED':x.Status
==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==
0,'cF1416C':x.Status
==1,'cff9800':x.Status==2}"
<span
class=
"cursor-pointer radius5 mr px5"
:class=
"{'bgD9F3FF':x.Status==
1&&x.Is_Cashier==0,'bgFAEAED':x.Status==1&&x.Is_Cashier
==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==
1&&x.Is_Cashier==0,'cF1416C':x.Status==1&&x.Is_Cashier
==1,'cff9800':x.Status==2}"
v-for=
"(x, i) in item.IncomeFinance"
@
click=
"openDetails(x)"
:key=
"i+20000"
>
{{ x.FrID }}
</span>
<span
v-if=
"item.IncomeFinance.length == 0"
class=
"c9e fz12"
>
{{$t('objFill.nocollectiondocument')}}
</span>
</div>
<el-tooltip
v-if=
"(item.OrderStatus == 1 || item.OrderStatus == 3 || item.OrderStatus == 4)&&pagesTitle=='销售'"
class=
"item"
effect=
"dark"
:content=
"$t('objFill.preparedocument')"
placement=
"top"
>
<i
class=
"absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(item, 0, 1)"
></i>
</el-tooltip>
</div>
<div
class=
"column px15 bgf5 radius5 ml flex-g pa relative"
>
<div
class=
"fz12"
>
{{$t('objFill.refundreceipt')}}
</div>
<div
class=
"row wrap orderNo fz12 py"
>
<span
class=
"cursor-pointer radius5 mr px5"
:class=
"{'bgD9F3FF':x.Status==
0,'bgFAEAED':x.Status
==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==
0,'cF1416C':x.Status
==1,'cff9800':x.Status==2}"
v-for=
"(x, i) in item.BackFinance"
<span
class=
"cursor-pointer radius5 mr px5"
:class=
"{'bgD9F3FF':x.Status==
1&&x.Is_Cashier==0,'bgFAEAED':x.Status==1&&x.Is_Cashier
==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==
1&&x.Is_Cashier==0,'cF1416C':x.Status==1&&x.Is_Cashier
==1,'cff9800':x.Status==2}"
v-for=
"(x, i) in item.BackFinance"
@
click=
"openDetails(x)"
:key=
"i+30000"
>
{{ x.FrID }}
</span>
<span
v-if=
"item.BackFinance.length == 0"
class=
"c9e fz12"
>
{{$t('objFill.norefundreceipt')}}
</span>
</div>
<el-tooltip
v-if=
"(item.OrderStatus == 1 || item.OrderStatus == 3 || item.OrderStatus == 4)&&pagesTitle=='销售'"
class=
"item"
effect=
"dark"
:content=
"$t('objFill.preparedocument')"
placement=
"top"
>
<i
class=
"absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(item, 0, 2)"
></i>
</el-tooltip>
</div>
<div
class=
"column px15 bgf5 radius5 ml flex-g pa relative"
>
<div
class=
"fz12"
>
{{$t('objFill.costdocument')}}
</div>
<div
class=
"row wrap orderNo fz12 py"
>
<span
class=
"cursor-pointer radius5 mr px5"
:class=
"{'bgD9F3FF':x.Status==
0,'bgFAEAED':x.Status
==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==
0,'cF1416C':x.Status
==1,'cff9800':x.Status==2}"
v-for=
"(x, i) in item.PayFinance"
<span
class=
"cursor-pointer radius5 mr px5"
:class=
"{'bgD9F3FF':x.Status==
1&&x.Is_Cashier==0,'bgFAEAED':x.Status==1&&x.Is_Cashier
==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==
1&&x.Is_Cashier==0,'cF1416C':x.Status==1&&x.Is_Cashier
==1,'cff9800':x.Status==2}"
v-for=
"(x, i) in item.PayFinance"
@
click=
"openDetails(x)"
:key=
"i+40000"
>
{{ x.FrID }}
</span>
<span
v-if=
"item.PayFinance.length == 0"
class=
"c9e fz12"
>
{{$t('objFill.nocostdocument')}}
</span>
</div>
<div
class=
"item absolute right20 bottom20"
v-if=
"(item.OrderStatus == 1 || item.OrderStatus == 3 || item.OrderStatus == 4) && pagesTitle == 'OP'"
>
<el-tooltip
class=
""
effect=
"dark"
:content=
"$t('objFill.preparedocument')"
placement=
"top"
>
<i
class=
"el-icon-circle-plus cursor-pointer c059FF6"
@
click=
"makeAdocument(item, 0, 3)"
></i>
</el-tooltip>
<el-tooltip
class=
""
effect=
"dark"
:content=
"$t('objFill.balanceout')"
placement=
"top"
>
<i
class=
"el-icon-circle-plus cursor-pointer c3FC4FF"
@
click=
"isOffset(item, 0, 3,null)"
></i>
</el-tooltip>
</div>
</div>
<div
class=
"column px15 bgf5 radius5 ml flex-g pa relative"
>
<div
class=
"fz12"
>
{{$t('objFill.invoicedocument')}}
</div>
...
...
@@ -803,6 +839,48 @@
</div>
</div>
</div>
<div
v-if=
"item.OrderStatus !=2"
class=
"row-c wrap justify-c px15 bgE8F5E9 radius5 ml fz12 orderop pa20 flex-s"
>
<div
v-if=
"item.OrderStatus == 1"
class=
"row-c cursor-pointer radius5 cancel py5"
@
click=
"UpdateAirTicket(item)"
>
<i
v-loading=
"loading0"
></i>
<span
class=
"cF1416C"
>
修改
</span>
</div>
<div
v-if=
"
item.OrderStatus == 1 &&
item.IncomeList&&item.IncomeList.length == 0 &&
item.RefundList&&item.RefundList.length == 0 &&
item.CostList&&item.CostList.length == 0"
class=
"row-c cursor-pointer radius5 cancel py5"
@
click=
"cancelAirOrder(item)"
>
<i
v-loading=
"loading0"
></i>
<span
class=
"cF1416C"
>
{{$t('sm.exitOrder')}}
</span>
</div>
<div
v-if=
"item.OrderStatus == 1 && pagesTitle=='OP'"
class=
"row-c cursor-pointer radius5 confirm py5"
@
click=
"SetAirTicketFinish(item, 1)"
>
<i
v-loading=
"loading1"
></i>
<span
class=
"c20C997"
>
完结
</span>
</div>
<div
v-if=
"(item.OrderStatus == 3|| item.OrderStatus == 4)&& pagesTitle=='OP'"
class=
"row-c cursor-pointer radius5 confirm py5"
@
click=
"SetAirTicketFinish(item, 2)"
>
<i
v-loading=
"loading1"
></i>
<span
class=
"c20C997"
>
收损完结
</span>
</div>
<div
v-if=
"item.OrderStatus == 1||item.OrderStatus == 5"
class=
"row-c cursor-pointer radius5 change1 py5"
@
click=
"SetAirTicketLoss(item)"
>
<i
v-loading=
"loading2"
></i>
<span
class=
"c20C997"
>
{{$t('fnc.shousun')}}
</span>
</div>
<div
v-if=
"item.OrderStatus == 3||item.OrderStatus == 4||item.OrderStatus == 5||item.OrderStatus == 6"
class=
"row-c cursor-pointer radius5 change1 py5"
@
click=
"SetAirTicketMoney(item)"
>
<i
v-loading=
"loading2"
></i>
<span
class=
"c20C997"
>
修改金额
</span>
</div>
<!-- 申请发票 -->
<ApplyFoInvoice
v-if=
"userInfo.EmployeeId==item.EnterID && pagesTitle=='销售'"
:obj=
"item"
:type=
"4"
></ApplyFoInvoice>
<div
class=
"row-c cursor-pointer radius5 change1 py5"
@
click=
"GetAirTicketLog(item)"
>
<i
v-loading=
"loading2"
></i>
<span
class=
"c20C997"
>
操作日志
</span>
</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;"
>
{{$t('objFill.groundsforcancellation')}}:
</div>
...
...
@@ -847,20 +925,51 @@
</el-row>
</div>
</el-dialog>
<!-- op备注 -->
<el-dialog
custom-class=
'addCompany'
:title=
"pagesTitle=='销售'?$t('objFill.bianjikehubz'):$t('objFill.bianjiopbz')"
:visible
.
sync=
"isShowRemark"
center
width=
"400px"
:close-on-press-escape=
"false"
:close-on-click-modal=
"false"
>
<el-row
class=
"flex"
style=
"margin-top: 10px;"
>
<el-col>
<span
style=
"display: block;margin-bottom: 10px;"
>
{{$t('pub.pubRemark')}}:
</span>
<span>
<el-input
type=
"textarea"
:rows=
"4"
v-model=
"postMsg.Remark"
>
</el-input>
</span>
</el-col>
</el-row>
<div
slot=
"footer"
class=
"dialog-footer"
>
<button
class=
"hollowFixedBtn"
@
click=
"isShowRemark = false"
>
{{$t('pub.cancelBtn')}}
</button>
<button
class=
"normalBtn"
type=
"primary"
@
click=
"submitEditRemark"
>
{{$t('pub.sureBtn')}}
</button>
</div>
</el-dialog>
<offset
:isShow=
"cdState"
:obj=
"queryObj"
@
close=
"cdState=false"
></offset>
<!-- 添加机票订单 -->
<div
v-if=
"dialogTicketOrderVisible"
>
<ticketOrderDialog
:name=
"dialogTicketOrderVisibleName"
:ID=
"TicketOrderID"
:GuestId=
"GuestId"
:obj=
"editObj"
type=
"1"
@
closeDialog=
"dialogTicketOrderVisible=false"
@
getlist=
"getlist"
></ticketOrderDialog>
</div>
</div>
</template>
<
script
>
import
offset
from
'../../public/offset.vue'
;
import
ApplyFoInvoice
from
'../../public/ApplyFoInvoice'
;
import
commissionDialog
from
"../../FinancialModule/TradeCommission/commissionDialog"
import
ticketOrderDialog
from
'./ticketOrderDialog.vue'
;
export
default
{
components
:
{
offset
,
commissionDialog
},
components
:
{
offset
,
commissionDialog
,
ticketOrderDialog
,
ApplyFoInvoice
},
props
:
[
"OrderList"
,
"pagesTitle"
],
data
()
{
return
{
postMsg
:{
OrderId
:
0
,
Type
:
1
,
Remark
:
''
},
isShowRemark
:
false
,
GuestId
:
0
,
TicketOrderID
:
0
,
editObj
:{},
dialogTicketOrderVisible
:
false
,
dialogTicketOrderVisibleName
:
''
,
queryObj
:
null
,
cdState
:
false
,
copyId
:
0
,
...
...
@@ -982,6 +1091,10 @@
}
},
methods
:
{
getlist
(){
this
.
$emit
(
'getlist'
)
this
.
dialogTicketOrderVisible
=
false
},
//合同跳转
GoToContract
(
item
,
id
)
{
this
.
OpenNewPage
(
'/TravelContractNew'
,
{
...
...
@@ -1174,12 +1287,11 @@
Type
:
type
,
crmOrderObj
:
JSON
.
stringify
(
data
)
};
this
.
$store
.
commit
(
"ChoiceAddFinancialDocuments"
);
this
.
$router
.
push
({
path
:
"/ChoiceAddFinancialDocuments"
,
query
});
return
if
(
num
==
2
){
query
.
searchTitle
=
'溢收团费退款'
;
}
else
if
(
num
==
3
&&
this
.
cdState
==
false
){
query
.
portTypeId
=
1
;
}
this
.
queryObj
=
query
if
(
!
Offset
)
{
this
.
$store
.
commit
(
"ChoiceAddFinancialDocuments"
);
...
...
@@ -1255,7 +1367,7 @@
}
},
// 销售取消订单
cancel
Order
(
)
{
cancel
AirOrder
(
row
)
{
let
that
=
this
if
(
this
.
loading0
)
return
;
that
.
$confirm
(
this
.
$t
(
'objFill.shifouquxiaodd'
),
this
.
$t
(
'tips.tips'
),
{
...
...
@@ -1264,22 +1376,21 @@
type
:
'warning'
}).
then
(()
=>
{
this
.
loading0
=
true
this
.
apipost
(
"ticket_post_CancelSaleTicketOrder"
,
{
OrderId
:
this
.
cancelOrderId
,
IsOPCancel
:
this
.
Title
!=
'销售'
?
1
:
0
,
Remark
:
this
.
cancelRemark
},
res
=>
{
this
.
loading0
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
$emit
(
"success"
);
}
else
{
this
.
Error
(
res
.
data
.
message
);
this
.
crmapipost
(
"/api/Order/SetGuestOrderState"
,
{
OrderId
:
row
.
OrderId
,
Type
:
"1"
,
},
(
res
)
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
$emit
(
"success"
);
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
}
}).
catch
(
err
=>
{
this
.
loading0
=
false
})
);
}).
catch
(()
=>
{
this
.
loading0
=
false
})
...
...
@@ -1430,7 +1541,106 @@
}
//设置table的行高
// this.tableHeight = h;
}
},
UpdateAirTicket
(
row
){
this
.
dialogTicketOrderVisibleName
=
"编辑机票订单"
;
this
.
GuestId
=
0
;
this
.
editObj
=
row
;
this
.
dialogTicketOrderVisible
=
true
;
},
SetAirTicketLoss
(
row
){
this
.
dialogTicketOrderVisibleName
=
"订单收损"
;
this
.
GuestId
=
0
;
this
.
editObj
=
row
;
this
.
dialogTicketOrderVisible
=
true
;
},
SetAirTicketMoney
(
row
){
this
.
dialogTicketOrderVisibleName
=
"编辑订单金额"
;
this
.
GuestId
=
0
;
this
.
editObj
=
row
;
this
.
dialogTicketOrderVisible
=
true
;
},
SetAirTicketFinish
(
row
,
type
){
if
(
type
==
1
){
let
tips
=
'一旦确认订单完结,你将无法对订单执行任何操作,包括订单相关的财务单据。'
this
.
$confirm
(
tips
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
apipost
(
'ticket_post_SetOrderFinish'
,
{
OrderId
:
row
.
OrderId
,
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
$emit
(
"getlist"
);
}
else
{
this
.
$message
.
warning
(
res
.
data
.
message
);
}
})
}).
catch
(()
=>
{
this
.
emptyMore
()
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
}
else
{
let
tips
=
'一旦确认订单收损完结,你将无法对订单执行任何操作,包括订单相关的财务单据。'
this
.
$confirm
(
tips
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
this
.
apipost
(
'ticket_post_SetOrderLossFinish'
,
{
OrderId
:
row
.
OrderId
,
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
$emit
(
"getlist"
);
}
else
{
this
.
$message
.
warning
(
res
.
data
.
message
);
}
})
}).
catch
(()
=>
{
this
.
emptyMore
()
this
.
$message
({
type
:
'info'
,
message
:
'已取消'
});
});
}
},
GetAirTicketLog
(
row
){
this
.
dialogTicketOrderVisibleName
=
"操作日志"
;
this
.
GuestId
=
0
;
this
.
editObj
=
row
;
this
.
dialogTicketOrderVisible
=
true
;
},
editRemark
(
item
){
this
.
postMsg
.
OrderId
=
item
.
OrderId
this
.
postMsg
.
Remark
=
this
.
pagesTitle
==
'销售'
?
item
.
Remark
:
item
.
OPRemark
this
.
isShowRemark
=
true
},
submitEditRemark
(){
if
(
!
this
.
postMsg
.
Remark
){
this
.
$message
.
error
(
this
.
$t
(
'objFill.opbeizhunonull'
));
return
}
this
.
apipost
(
'ticket_post_SetAirOrderRemark'
,
{
OrderId
:
this
.
postMsg
.
OrderId
,
Type
:
this
.
pagesTitle
==
'销售'
?
1
:
2
,
Remark
:
this
.
postMsg
.
Remark
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
isShowRemark
=
false
this
.
$emit
(
'getlist'
)
this
.
$forceUpdate
();
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
})
},
},
mounted
()
{
this
.
userInfo
=
this
.
getLocalStorage
();
...
...
src/components/SingleAirTicket/components/TicketOrder.vue
View file @
0bcad647
...
...
@@ -53,7 +53,7 @@
<div
class=
"HotelWorkList"
@
click=
"showWarningSearch=false"
>
<div
class=
"query-box HotelWorkInput"
style=
"border-bottom: none;"
>
<ul>
<li>
<
!--
<
li>
<span>
<em>
{{
$t
(
'OrderList.search.status'
)
}}
</em>
<el-select
v-model=
"msg.OrderStatus"
class=
"w200 HworkInput"
>
...
...
@@ -61,7 +61,7 @@
<el-option
v-for=
"item in OrderStatusList"
:key=
"item.Id"
:label=
"item.Name"
:value=
"item.Id"
></el-option>
</el-select>
</span>
</li>
</li>
-->
<li
v-if=
"Title!='销售'"
>
<span>
<em>
{{
$t
(
'visa.v_yewuyuan'
)
}}
</em>
...
...
@@ -73,7 +73,7 @@
</el-select>
</span>
</li>
<li
v-if=
"Title!='销售'"
>
<
!--
<
li
v-if=
"Title!='销售'"
>
<span>
<em>
{{
$t
(
'objFill.yinliuren'
)
}}
</em>
<el-select
filterable
v-model=
'msg.CreateBy'
class=
"w200"
>
...
...
@@ -83,7 +83,7 @@
</el-option>
</el-select>
</span>
</li>
</li>
-->
<li>
<span>
<em>
{{
$t
(
'hotel.hotel_OrderStates'
)
}}
</em>
...
...
@@ -110,11 +110,11 @@
class=
"w200"
/>
</span>
</li>
<li>
<
!--
<
li>
<span><em>
{{
$t
(
'ground.CustomerName'
)
}}
</em>
<el-input
clearable
v-model=
"msg.GuestName"
:placeholder=
"$t('ground.CustomerName')"
class=
"w200"
/>
</span>
</li>
</li>
-->
<li>
<span>
<em>
{{
$t
(
'objFill.baomingshijian'
)
}}
</em>
...
...
@@ -137,58 +137,17 @@
</span>
</li>
<li>
<span>
<em
@
click
.
stop=
"showWarningSearch=true"
style=
"margin-top: 10px;cursor: pointer;"
>
{{
$t
(
'visa.v_gjchaxun'
)
}}
<i
class=
"el-icon-caret-bottom"
></i></em>
<el-popover
width=
"300"
v-model=
"showWarningSearch"
trigger=
"click"
>
<div>
<div
class=
"TC_queryTitle"
>
{{
$t
(
'objFill.v101.jipgjcxun'
)
}}
</div>
<div
class=
"clearfix"
>
<div
class=
"TC_leftSearch"
>
<div>
<span>
{{
$t
(
'salesModule.TicketStatus'
)
}}
</span>
<el-select
v-model=
'msg.TicketStatus'
class=
"w150"
>
<el-option
:value=
"0"
:label=
"$t('pub.unlimitedSel')"
></el-option>
<el-option
v-for=
'item in ticketingStatusList'
:label=
'item.Name'
:value=
'item.Id'
:key=
'item.Id'
>
</el-option>
</el-select>
</div>
<div>
<span>
{{
$t
(
'objFill.v101.chuqianzt'
)
}}
</span>
<el-select
v-model=
'msg.VisaStatus'
class=
"w150"
>
<el-option
v-for=
'item in VisaList'
:label=
'item.Name'
:value=
'item.Id'
:key=
'item.Id'
>
</el-option>
</el-select>
</div>
<div>
<span>
{{
$t
(
'objFill.wangjie'
)
}}{{
$t
(
'salesModule.Time'
)
}}
</span>
<!--
<el-date-picker
style=
"height: 34px;width: 210px;"
value-format=
"yyyy-MM-dd"
v-model=
"Datelist"
type=
"daterange"
:range-separator=
"$t('OrderList.zhi')"
:start-placeholder=
"$t('OrderList.star')"
:end-placeholder=
"$t('OrderList.end')"
@
change=
"getDates"
>
</el-date-picker>
-->
<StartDateLimit
:clearable=
"true"
:dateTime=
"Datelist"
@
change=
"(startDate,endDate)=>
{Datelist=[startDate,endDate],getDates()}" style="width: 210px;">
</StartDateLimit>
</div>
<div>
<StartDateLimit
:clearable=
"true"
:dateTime=
"Datelist"
@
change=
"(startDate,endDate)=>
{Datelist=[startDate,endDate],getDates()}">
</StartDateLimit>
</li>
<li>
<span>
{{
$t
(
'objFill.v101.FinancialModule.chuxings'
)
}}
</span>
<el-input
v-model=
'msg.StartCityName'
style=
"width: 210px;"
></el-input>
</div>
</div>
<div
style=
"text-align: right;margin-top: 10px;"
>
<button
class=
"normalBtn TC_SearchBtn"
@
click
.
stop=
"GetList(),showWarningSearch=false"
>
{{
$t
(
'pub.searchBtn'
)
}}
</button>
</div>
</div>
</div>
</el-popover>
</span>
<el-input
v-model=
'msg.StartCityName'
></el-input>
</li>
<li>
<input
v-if=
"userInfo.SimpleEasy&&userInfo.SimpleEasy==1"
type=
"button"
class=
"normalBtn"
value=
"新增机票"
@
click=
"AddAirTicket()"
/>
<input
type=
"button"
class=
"normalBtn"
:value=
"$t('pub.searchBtn')"
@
click
.
stop=
"msg.pageIndex=1,currentPage=1,GetList()"
/>
</li>
...
...
@@ -252,25 +211,37 @@
</el-row>
</div>
<OrderList
:pagesTitle=
"Title"
:OrderList=
"OrderList"
v-loading=
"loading"
@
success=
"msg.pageIndex=1,GetList()"
>
<OrderList
:pagesTitle=
"Title"
:OrderList=
"OrderList"
v-loading=
"loading"
@
success=
"msg.pageIndex=1,GetList()"
@
getlist=
"GetList()"
>
</OrderList>
<div
v-if=
"OrderList&&OrderList.length==0"
style=
"text-align: center;padding: 100px;"
>
{{
$t
(
'system.content_noData'
)
}}
</div>
<el-pagination
v-if=
"OrderList&&OrderList.length>0"
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
>
</el-pagination>
<!-- 添加机票订单 -->
<div
v-if=
"dialogTicketOrderVisible"
>
<ticketOrderDialog
:name=
"dialogTicketOrderVisibleName"
:ID=
"TicketOrderID"
:GuestId=
"GuestId"
:obj=
"editObj"
type=
"1"
@
closeDialog=
"dialogTicketOrderVisible=false"
@
getlist=
"GetList()"
></ticketOrderDialog>
</div>
</div>
</
template
>
<
script
>
import
OrderList
from
'./OrderList
.vue'
;
import
ticketOrderDialog
from
'./ticketOrderDialog
.vue'
;
import
StartDateLimit
from
'../../public/StartDateLimit.vue'
;
import
OrderList
from
'./OrderList.vue'
;
export
default
{
props
:
[
'pagesTitle'
,
'dataObj'
],
components
:
{
OrderList
,
StartDateLimit
StartDateLimit
,
ticketOrderDialog
},
data
()
{
return
{
GuestId
:
0
,
TicketOrderID
:
0
,
editObj
:{},
dialogTicketOrderVisible
:
false
,
dialogTicketOrderVisibleName
:
''
,
showWarningSearch
:
false
,
TotalMsg
:
null
,
MultipleChoiceList
:
[
//多选项目
...
...
@@ -509,15 +480,14 @@
},
//获取酒店订单列表
GetList
()
{
this
.
loading
=
true
let
url
=
"/api/Order/GetGuestOrderStatisticsPageList"
this
.
loading
=
true
// 销售 OP
if
(
this
.
pagesTitle
==
'销售'
)
{
this
.
msg
.
IsMyOrder
=
'1'
}
else
{
this
.
msg
.
IsMyOrder
=
'0'
}
this
.
crmapipost
(
url
,
this
.
msg
,
this
.
apipost
(
'ticket_post_GetAirOrderStatisticsPageList'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
let
data
=
res
.
data
.
data
.
Data
.
pageData
...
...
@@ -657,6 +627,11 @@
//设置table的行高
this
.
tableHeight
=
h
;
},
AddAirTicket
(){
this
.
TicketOrderID
=
0
;
this
.
dialogTicketOrderVisible
=
true
;
this
.
dialogTicketOrderVisibleName
=
"新建机票订单"
;
}
},
created
()
{
if
(
this
.
$route
.
query
.
OrderId
)
{
...
...
src/components/SingleAirTicket/components/ticketOrderDialog.vue
0 → 100644
View file @
0bcad647
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/components/TravelManager/TravelList/TeamBalancePayment.vue
View file @
0bcad647
...
...
@@ -939,8 +939,11 @@
<
template
v-if=
"IsHaveAuth"
>
<input
type=
"button"
:value=
"$t('Operation.Op_visaPrice')"
class=
"hollowFixedBtn TeamAddBtn"
v-show=
"ishowBtn"
@
click=
"goUrlVisa"
/>
<input
type=
"button"
:value=
"$t('objFill.tuanduizr')"
class=
"hollowFixedBtn TeamAddBtn"
v-show=
"ishowBtn"
@
click=
"TDZR"
/>
<input
v-if=
"groupId!=2"
type=
"button"
:value=
"$t('pub.addBtn')"
class=
"hollowFixedBtn TeamAddBtn"
v-show=
"ishowBtn"
@
click=
"AddOutDetail(3)"
/>
<span
style=
"float:right"
v-if=
"groupId==2"
>
{{
$t
(
'objFill.zhuyi'
)
}}
:
{{
$t
(
'objFill.feiqianzfcbzd'
)
}}
</span>
<template
v-if=
"userInfo.SimpleEasy&&userInfo.SimpleEasy==1"
>
<input
type=
"button"
class=
"normalBtn TeamAddBtn"
:value=
"$t('objFill.precharge')"
@
click=
"isOffset(14,2)"
/>
<input
type=
"button"
:value=
"$t('pub.addBtn')"
class=
"hollowFixedBtn TeamAddBtn"
v-show=
"ishowBtn"
@
click=
"AddOutDetail(3)"
/>
</
template
>
<span
style=
"float:right"
v-else
>
{{$t('objFill.zhuyi')}}:{{$t('objFill.feiqianzfcbzd')}}
</span>
</template>
</div>
<div
class=
"clearfix TB_PrintDiv"
>
...
...
@@ -2111,10 +2114,15 @@
</div>
</el-dialog>
<offset
:isShow=
"cdState"
:obj=
"queryObj"
@
close=
"cdState=false"
></offset>
</div>
</template>
<
script
>
import
{
userMixin
}
from
"../../common/mixins/userMixin.js"
;
import
offset
from
'../../public/offset.vue'
;
export
default
{
mixins
:
[
userMixin
],
components
:
{
offset
},
data
()
{
return
{
draftList
:
[],
//我的草稿数据
...
...
@@ -2244,10 +2252,62 @@
dataDocList
:
[],
EditBtn
:
false
,
ActionMenuCode
:
''
,
groupId
:
2
groupId
:
2
,
queryObj
:
{},
cdState
:
false
,
};
},
methods
:
{
isOffset
(
_orderSource
,
_type
){
if
(
this
.
OutBranchId
>
0
){
this
.
goUrlYFKCD
(
_orderSource
,
_type
,
'Offset'
)
}
else
{
this
.
$message
({
message
:
'出团公司为空,不能冲抵'
,
type
:
'warning'
})
}
},
goUrlYFKCD
(
_orderSource
,
_type
,
Offset
)
{
let
Handmsg
=
{
OtherType
:
7
,
ReFinanceId
:
0
,
Rate
:
0
,
TCNUM
:
''
,
czState
:
true
,
}
let
TCIDARR
=
[]
let
id
=
[];
TCIDARR
.
push
(
this
.
TCID
)
let
orderObj
=
{
OrderID
:
0
,
OrderSource
:
_orderSource
,
Obj
:
{},
SourceID
:
this
.
TCID
,
TCIDList
:
TCIDARR
,
// LineId : ''
}
id
=
id
.
length
>
0
?
JSON
.
stringify
(
id
)
:
null
;
// 冲抵
if
(
Offset
){
orderObj
.
TCIDList
=
[
this
.
TCID
]
let
query
=
{
'czmsg'
:
Handmsg
,
'Type'
:
_type
,
'path'
:
'teamRevenueExpenditure'
,
'companyID'
:
this
.
OutBranchId
,
'blank'
:
'y'
,
'orderObj'
:
JSON
.
stringify
(
orderObj
),
'OrderSource'
:
_orderSource
,
'searchTitle'
:
'分摊'
};
this
.
queryObj
=
query
this
.
cdState
=
true
return
}
},
Financial_post_GetPageList
(){
let
msg
=
{
pageIndex
:
1
,
...
...
src/components/TravelManager/TravelList/TravelControlList.vue
View file @
0bcad647
...
...
@@ -587,74 +587,82 @@
</p>
<el-popover
width=
"900"
trigger=
"click"
popper-class=
"TC_tripDetails"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr
class=
"_color_666"
style=
"text-align: center"
>
<th
width=
"60"
>
{{ $t("Airticket.Air_segment") }}
</th>
<th
width=
"80"
>
{{ $t("system.query_flightNum") }}
</th>
<th
width=
"150"
>
{{ $t("system.ph_flightTime") }}
</th>
<th
width=
"80"
>
{{ $t("system.query_arrivalTime") }}
</th>
<th
width=
"100"
>
{{ $t("system.query_stopCity") }}
</th>
</tr>
<tr
v-for=
"(fItem, fIndex) in item.flightList"
:key=
"fIndex"
style=
"text-align: center"
>
<td
class=
"_d_name _color_666"
>
<span
v-if=
"fIndex == 0"
>
{{ $t("Airticket.Air_go") }}
</span>
<span
v-else-if=
"fIndex == item.flightList.length - 1"
>
{{
<
template
v-for=
"(nItem,newIndex) in item.newFlightList"
>
<tr
class=
"_color_666"
style=
"text-align: center"
:key=
"`hf_`+newIndex"
>
<th
width=
"60"
>
{{
$t
(
"Airticket.Air_segment"
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
"system.query_flightNum"
)
}}
</th>
<th
width=
"150"
>
{{
$t
(
"system.ph_flightTime"
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
"system.query_arrivalTime"
)
}}
</th>
<th
width=
"100"
>
{{
$t
(
"system.query_stopCity"
)
}}
</th>
</tr>
<tr
v-for=
"(fItem, fIndex) in nItem.flightList"
:key=
"`hd_`+newIndex+`d_`+fIndex"
style=
"text-align: center"
>
<td
class=
"_d_name _color_666"
>
<span
v-if=
"fIndex == 0"
>
{{
$t
(
"Airticket.Air_go"
)
}}
</span>
<span
v-else-if=
"fIndex == item.flightList.length - 1"
>
{{
$t
(
"Airticket.Air_returnTrip"
)
}}
</span>
<span
v-else-if=
"fIndex > 0 && fIndex != item.flightList.length - 1"
>
{{ $t("Airticket.Air_transit") }}
</span>
</td>
<td>
<div>
{{ fItem.Flight_number }}
</div>
<div
style=
"margin-top: 5px"
>
{{ fItem.AlName }}
</div>
</td>
<td>
<div>
{{ fItem.FlightDate }} {{ fItem.Departure_time }}
</div>
<div
style=
"margin-top: 5px"
>
<span
v-if=
"fItem.DIATA"
>
({{ fItem.DIATA }})
</span>
{{ fItem.dName }}
</div>
</td>
<td>
<div>
{{ fItem.FlightArrivalTime }} {{ fItem.Arrival_time }}
</div>
<div
style=
"margin-top: 5px"
>
<span
v-if=
"fItem.AIATA"
>
({{ fItem.AIATA }})
</span>
{{ fItem.aName }}
</div>
</td>
<td>
<
template
v-if=
"fItem.StopoverIATA"
>
(
{{
fItem
.
StopoverIATA
}}
)
</
template
>
{{ fItem.StopoverName }}
</td>
</tr>
<span
v-else-if=
"fIndex > 0 && fIndex != item.flightList.length - 1"
>
{{
$t
(
"Airticket.Air_transit"
)
}}
</span>
</td>
<td>
<div>
{{
fItem
.
Flight_number
}}
</div>
<div
style=
"margin-top: 5px"
>
{{
fItem
.
AlName
}}
</div>
</td>
<td>
<div>
{{
fItem
.
FlightDate
}}
{{
fItem
.
Departure_time
}}
</div>
<div
style=
"margin-top: 5px"
>
<span
v-if=
"fItem.DIATA"
>
(
{{
fItem
.
DIATA
}}
)
</span>
{{
fItem
.
dName
}}
</div>
</td>
<td>
<div>
{{
fItem
.
FlightArrivalTime
}}
{{
fItem
.
Arrival_time
}}
</div>
<div
style=
"margin-top: 5px"
>
<span
v-if=
"fItem.AIATA"
>
(
{{
fItem
.
AIATA
}}
)
</span>
{{
fItem
.
aName
}}
</div>
</td>
<td>
<template
v-if=
"fItem.StopoverIATA"
>
(
{{
fItem
.
StopoverIATA
}}
)
</
template
>
{{ fItem.StopoverName }}
</td>
</tr>
</template>
</table>
<div
class=
"FlightDiv-TCL"
slot=
"reference"
>
<
template
v-if=
"item.UseFlightType == 0"
>
<div
v-for=
"subItem in item.flightList"
slot=
"reference"
:key=
"subItem.subCode"
class=
"TCL-flighInfoList"
>
<span
class=
"travelnowrap"
>
<span
class=
"TCL-FlightNumber"
>
{{
<template
v-for=
"(nItem,newIndex) in item.newFlightList"
>
<div
v-for=
"(subItem) in nItem.flightList"
slot=
"reference"
:key=
"`f_`+newIndex+`_`+subItem.ID"
class=
"TCL-flighInfoList"
>
<span
class=
"travelnowrap"
>
<span
class=
"TCL-FlightNumber"
>
{{
subItem
.
Flight_number
}}
</span>
<span><template
v-if=
"subItem.DIATA"
>
(
{{
subItem
.
DIATA
}}
)
</
template
>
<
template
v-else
>
(
{{
subItem
.
dName
}}
)
</
template
></span>
{{ subItem.DepartureName }}
{{
<span><template
v-if=
"subItem.DIATA"
>
(
{{
subItem
.
DIATA
}}
)
</
template
>
<
template
v-else
>
(
{{
subItem
.
dName
}}
)
</
template
></span>
{{ subItem.DepartureName }}
{{
subItem.StopoverName == ""
? ""
: "-(" + subItem.StopoverIATA + ")" + subItem.StopoverName
}}
<
template
v-if=
"subItem.ArrivalCityName"
>
<span
v-if=
"subItem.AIATA"
>
-(
{{
subItem
.
AIATA
}}
)
</span>
<span
v-else
>
-
</span>
{{
subItem
.
ArrivalCityName
}}
<template
v-if=
"!subItem.DIATA"
>
(
{{
subItem
.
aName
}}
)
</
template
>
</template>
<span
v-if=
"subItem.FlightState == 1"
class=
"TCL-greenType"
>
【OK】
</span>
<span
v-else
class=
"TCL-redType"
>
【{{ $t("visa.v_zanding") }}】
</span>
</span>
</div>
<
template
v-if=
"subItem.ArrivalCityName"
>
<span
v-if=
"subItem.AIATA"
>
-(
{{
subItem
.
AIATA
}}
)
</span>
<span
v-else
>
-
</span>
{{
subItem
.
ArrivalCityName
}}
<template
v-if=
"!subItem.DIATA"
>
(
{{
subItem
.
aName
}}
)
</
template
>
</template>
<span
v-if=
"subItem.FlightState == 1"
class=
"TCL-greenType"
>
【OK】
</span>
<span
v-else
class=
"TCL-redType"
>
【{{ $t("visa.v_zanding") }}】
</span>
</span>
</div>
<
template
v-if=
"newIndex!=item.newFlightList.length-1"
>
<div
slot=
"reference"
class=
"TCL-flighInfoList"
style=
"border-bottom:1px solid #e5e5e5"
>
</div>
</
template
>
</template>
</template>
<
template
v-else
>
<div
v-for=
"subItem in item.flightList"
slot=
"reference"
:key=
"subItem.subCode"
...
...
@@ -1660,7 +1668,7 @@
</el-dropdown-item>
<el-dropdown-item
@
click
.
native=
"CopyTripAndFeature(item,3)"
>
机票转团
</el-dropdown-item>
</el-dropdown-item>
<el-dropdown-item
@
click
.
native=
"ckChangePrice(item,1)"
>
价格变更
</el-dropdown-item>
...
...
src/components/TravelManager/TravelList/TravelControlListSale.vue
View file @
0bcad647
...
...
@@ -450,49 +450,100 @@
<p
class=
"TCLflight_GO"
>
<i
class=
"iconfont icon-hangban1"
></i>
{{
$t
(
'visa.v_hangban'
)
}}
</p>
<el-popover
width=
"900"
trigger=
"click"
popper-class=
"TC_tripDetails"
>
<el-popover
width=
"900"
trigger=
"click"
popper-class=
"TC_tripDetails"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr
class=
"_color_666"
style=
"text-align:center;"
>
<th
width=
"60"
>
{{
$t
(
'Airticket.Air_segment'
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
'system.query_flightNum'
)
}}
</th>
<th
width=
"150"
>
{{
$t
(
'system.ph_flightTime'
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
'system.query_arrivalTime'
)
}}
</th>
<th
width=
"100"
>
{{
$t
(
'system.query_stopCity'
)
}}
</th>
</tr>
<tr
v-for=
"(ds,din) in item.flightList"
:key=
"din"
style=
"text-align:center;"
>
<td
class=
"_d_name _color_666"
>
<span
v-if=
"din==0"
>
{{
$t
(
'Airticket.Air_go'
)
}}
</span>
<span
v-else-if=
"din==item.flightList.length-1"
>
{{
$t
(
'Airticket.Air_returnTrip'
)
}}
</span>
<span
v-else-if=
"din>0 && din!=item.flightList.length-1"
>
{{
$t
(
'Airticket.Air_transit'
)
}}
</span>
</td>
<td>
<div>
{{
ds
.
Flight_number
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
AlName
}}
</div>
</td>
<td>
<div>
{{
ds
.
FlightDate
}}
{{
ds
.
Departure_time
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
dName
}}
</div>
</td>
<td>
<div>
{{
ds
.
FlightArrivalTime
}}
{{
ds
.
Arrival_time
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
aName
}}
</div>
</td>
<td>
{{
ds
.
StopoverName
}}
</td>
</tr>
<template
v-for=
"(nItem,newIndex) in item.newFlightList"
>
<tr
class=
"_color_666"
style=
"text-align: center"
:key=
"`hf_`+newIndex"
>
<th
width=
"60"
>
{{
$t
(
"Airticket.Air_segment"
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
"system.query_flightNum"
)
}}
</th>
<th
width=
"150"
>
{{
$t
(
"system.ph_flightTime"
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
"system.query_arrivalTime"
)
}}
</th>
<th
width=
"100"
>
{{
$t
(
"system.query_stopCity"
)
}}
</th>
</tr>
<tr
v-for=
"(fItem, fIndex) in nItem.flightList"
:key=
"`hd_`+newIndex+`d_`+fIndex"
style=
"text-align: center"
>
<td
class=
"_d_name _color_666"
>
<span
v-if=
"fIndex == 0"
>
{{
$t
(
"Airticket.Air_go"
)
}}
</span>
<span
v-else-if=
"fIndex == item.flightList.length - 1"
>
{{
$t
(
"Airticket.Air_returnTrip"
)
}}
</span>
<span
v-else-if=
"fIndex > 0 && fIndex != item.flightList.length - 1"
>
{{
$t
(
"Airticket.Air_transit"
)
}}
</span>
</td>
<td>
<div>
{{
fItem
.
Flight_number
}}
</div>
<div
style=
"margin-top: 5px"
>
{{
fItem
.
AlName
}}
</div>
</td>
<td>
<div>
{{
fItem
.
FlightDate
}}
{{
fItem
.
Departure_time
}}
</div>
<div
style=
"margin-top: 5px"
>
<span
v-if=
"fItem.DIATA"
>
(
{{
fItem
.
DIATA
}}
)
</span>
{{
fItem
.
dName
}}
</div>
</td>
<td>
<div>
{{
fItem
.
FlightArrivalTime
}}
{{
fItem
.
Arrival_time
}}
</div>
<div
style=
"margin-top: 5px"
>
<span
v-if=
"fItem.AIATA"
>
(
{{
fItem
.
AIATA
}}
)
</span>
{{
fItem
.
aName
}}
</div>
</td>
<td>
<template
v-if=
"fItem.StopoverIATA"
>
(
{{
fItem
.
StopoverIATA
}}
)
</
template
>
{{ fItem.StopoverName }}
</td>
</tr>
</template>
</table>
<div
class=
"FlightDiv-TCL"
slot=
"reference"
>
<div
v-for=
"subItem in item.flightList"
slot=
"reference"
:key=
"subItem.subCode"
class=
"TCL-flighInfoList"
>
<span
class=
"travelnowrap"
>
<span
class=
"TCL-FlightNumber"
>
{{
subItem
.
Flight_number
}}
</span>
{{
subItem
.
DepartureName
}}
{{
subItem
.
StopoverName
==
""
?
""
:
"-"
+
subItem
.
StopoverName
}}
{{
subItem
.
ArrivalCityName
==
""
?
""
:
"-"
+
subItem
.
ArrivalCityName
}}
<span
v-if=
"subItem.FlightState==1"
class=
"TCL-greenType"
>
【OK】
</span>
<span
v-else
class=
"TCL-redType"
>
【
{{
$t
(
'visa.v_zanding'
)
}}
】
</span>
</span>
</div>
<
template
v-if=
"item.UseFlightType == 0"
>
<template
v-for=
"(nItem,newIndex) in item.newFlightList"
>
<div
v-for=
"(subItem) in nItem.flightList"
slot=
"reference"
:key=
"`f_`+newIndex+`_`+subItem.ID"
class=
"TCL-flighInfoList"
>
<span
class=
"travelnowrap"
>
<span
class=
"TCL-FlightNumber"
>
{{
subItem
.
Flight_number
}}
</span>
<span><template
v-if=
"subItem.DIATA"
>
(
{{
subItem
.
DIATA
}}
)
</
template
>
<
template
v-else
>
(
{{
subItem
.
dName
}}
)
</
template
></span>
{{ subItem.DepartureName }}
{{
subItem.StopoverName == ""
? ""
: "-(" + subItem.StopoverIATA + ")" + subItem.StopoverName
}}
<
template
v-if=
"subItem.ArrivalCityName"
>
<span
v-if=
"subItem.AIATA"
>
-(
{{
subItem
.
AIATA
}}
)
</span>
<span
v-else
>
-
</span>
{{
subItem
.
ArrivalCityName
}}
<template
v-if=
"!subItem.DIATA"
>
(
{{
subItem
.
aName
}}
)
</
template
>
</template>
<span
v-if=
"subItem.FlightState == 1"
class=
"TCL-greenType"
>
【OK】
</span>
<span
v-else
class=
"TCL-redType"
>
【{{ $t("visa.v_zanding") }}】
</span>
</span>
</div>
<
template
v-if=
"newIndex!=item.newFlightList.length-1"
>
<div
slot=
"reference"
class=
"TCL-flighInfoList"
style=
"border-bottom:1px solid #e5e5e5"
>
</div>
</
template
>
</template>
</template>
<
template
v-else
>
<div
v-for=
"subItem in item.flightList"
slot=
"reference"
:key=
"subItem.subCode"
class=
"TCL-flighInfoList"
>
<span
class=
"travelnowrap"
>
<span
class=
"TCL-FlightNumber"
>
{{
subItem
.
Flight_number
}}
</span>
{{
subItem
.
aName
}}
{{
subItem
.
Departure_time
}}
-
{{
subItem
.
dName
}}
{{
subItem
.
Arrival_time
}}
<span
v-if=
"subItem.FlightState == 1"
class=
"TCL-greenType"
>
【OK】
</span>
<span
v-else
class=
"TCL-redType"
>
【
{{
$t
(
"visa.v_zanding"
)
}}
】
</span>
</span>
</div>
</
template
>
</div>
</el-popover>
</div>
...
...
src/components/cruiseShip/list/cruiseShipInfo.vue
View file @
0bcad647
...
...
@@ -427,8 +427,9 @@
<div
class=
"flexOne changInfo"
:class=
"
{ 'drawer-mode': isDrawerMode }">
<!-- 正常内容 -->
<div
class=
"resource-content clearfix"
>
<!-- :disabled="addMsg.OrderId>0&&(activeTab=='basic'||activeTab=='contact')" -->
<el-form
:model=
"addMsg"
:rules=
"rules"
class=
"h-full"
ref=
"addMsg"
label-width=
"120px"
:disabled=
"addMsg.OrderId>0&&(activeTab=='basic'||activeTab=='contact')"
>
>
<div
class=
"hotel-form-container h-full"
>
<el-tabs
v-model=
"activeTab"
type=
"border-card"
class=
"hotel-tabs"
>
<el-tab-pane
label=
"基础资料"
name=
"basic"
>
...
...
@@ -682,7 +683,8 @@
</el-dialog>
<div
class=
"btn-list"
>
<div
class=
"btn-actions"
>
<button
v-if=
"!addMsg.OrderId"
class=
"save-Btn"
@
click=
"submitForm('addMsg')"
:disabled=
"isSaving"
>
<!-- v-if="!addMsg.OrderId" -->
<button
class=
"save-Btn"
@
click=
"submitForm('addMsg')"
:disabled=
"isSaving"
>
<i
v-if=
"isSaving"
class=
"el-icon-loading"
style=
"margin-right: 4px;"
></i>
{{
isSaving
?
''
:
$t
(
'pub.saveBtn'
)
}}
</button>
...
...
src/components/cruiseShip/list/cruiseShipListConfig.js
View file @
0bcad647
...
...
@@ -54,7 +54,7 @@ export const spotListConfig = {
prop
:
'CouponsName'
,
minWidth
:
150
,
fixed
:
'left'
,
type
:
'link'
,
//
type: 'link',
slotName
:
'CouponsName'
,
filter
:
{
type
:
'input'
,
...
...
src/components/cruiseShip/list/cruiseShipOrderList.vue
View file @
0bcad647
...
...
@@ -20,11 +20,11 @@
@
add-click=
"addSpot"
>
<!-- 插槽 -->
<template
slot=
"CouponsName"
slot-scope=
"
{ row }">
<
!--
<
template
slot=
"CouponsName"
slot-scope=
"
{ row }">
<span
class=
"name-link"
@
click=
"editSpot(row)"
>
{{
row
.
CouponsName
}}
</span>
</
template
>
</
template
>
-->
<
template
slot=
"profit"
slot-scope=
"{ row }"
>
{{
row
.
Income
-
row
.
CostMoney
-
row
.
Refund
>
0
?(
row
.
Income
-
row
.
CostMoney
-
row
.
Refund
).
toFixed
(
2
):
'-'
}}
</
template
>
...
...
@@ -114,6 +114,12 @@
<!--
<el-button
type=
"text"
size=
"mini"
@
click=
"manageData(row)"
>
邮轮
</el-button>
-->
<!--
<el-button
type=
"text"
size=
"mini"
@
click=
"editSpot(row)"
>
编辑
</el-button>
-->
<div
class=
"row"
>
<span
v-if=
"row.OrderStatus == 2"
class=
"c059FF6 mr-xs pointer"
@
click=
"editSpot(row)"
>
{{
$t
(
'pub.edit'
)
}}
</span>
<span
v-if=
"row.OrderStatus == 1 && row.IncomeList.length == 0 && row.RefundList.length == 0 && row.CostList.length == 0"
class=
"delete-btn mr-xs pointer"
@
click=
"cancelOrder(row)"
...
...
@@ -124,7 +130,7 @@
@
click=
"clickOperation(row,3)"
>
{{
$t
(
'fnc.shousun'
)
}}
</span>
<!-- v-if="row.OrderStatus>1&&!row.OrderStatus!=3&&!row.OrderStatus!=4&&isOP&&userInfo.ActionMenuCode.indexOf('is_correlationOP') != -1" -->
<span
<
!--
<
span
class=
"c059FF6 mr-xs pointer"
@
click=
"clickOperation(row,4)"
>
{{
$t
(
'pub.edit'
)
}}
OP
</span>
...
...
@@ -132,7 +138,7 @@
<span
v-if=
"row.OrderStatus!=3"
class=
"c059FF6 mr-xs pointer"
@
click=
"clickOperation(row,5)"
>
{{
$t
(
'pub.edit'
)
}}{{
$t
(
'fnc.a_zongjine'
)
}}
</span>
>
{{
$t
(
'pub.edit'
)
}}{{
$t
(
'fnc.a_zongjine'
)
}}
</span>
-->
<ApplyFoInvoice
class=
"pointer"
v-if=
"userInfo&&userInfo.RB_Group_id==2&&userInfo.EmployeeId==row.EnterID"
:obj=
"row"
:type=
"7"
></ApplyFoInvoice>
...
...
src/components/orderCommon/order-remark.vue
View file @
0bcad647
...
...
@@ -49,13 +49,13 @@
</el-row>
<template
v-if=
"postMsg.TeamType!=2"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"2"
>
<el-col
:span=
"2"
v-if=
"userInfo.SimpleEasy!=1"
>
<el-form-item
:label=
"$t('salesModule.IsLianYn')"
>
<el-checkbox
v-model=
"postMsg.IsIntermodal"
:true-label=
"1"
:false-label=
"0"
>
</el-checkbox>
</el-form-item>
</el-col>
<el-col
:span=
"
22
"
>
<el-col
:span=
"
userInfo.SimpleEasy!=1?22:24
"
>
<el-form-item
:label=
"$t('objFill.liangyunbeizhu')"
>
<el-input
v-model=
"postMsg.UnionRemark"
type=
"textarea"
maxlength=
"500"
>
</el-input>
...
...
@@ -67,8 +67,10 @@
</div>
</template>
<
script
>
import
{
userMixin
}
from
"../common/mixins/userMixin.js"
;
export
default
{
props
:
[
"remarksMsg"
],
mixins
:
[
userMixin
],
data
()
{
return
{
RemarksRules
:
{
...
...
src/router/config.js
View file @
0bcad647
...
...
@@ -3646,6 +3646,14 @@ export default {
title
:
'跟团游订单'
},
},
{
// 销售 跟团游订单
path
:
'/groupTourOrderOP'
,
name
:
'groupTourOrderOP'
,
component
:
resolve
=>
require
([
'@/components/SalesModule/groupTourOrder'
],
resolve
),
meta
:
{
title
:
'跟团游订单OP'
},
},
{
// 销售 特价申请函
path
:
'/SpecialList'
,
name
:
'SpecialList'
,
...
...
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