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
097110fb
Commit
097110fb
authored
Mar 21, 2025
by
吴春
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/superman
parents
585430fd
239f1e20
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
2086 additions
and
1 deletion
+2086
-1
quotationEdit.vue
...onents/TravelManager/TravelNewQuotation/quotationEdit.vue
+727
-0
quotationEditDetails.vue
...TravelManager/TravelNewQuotation/quotationEditDetails.vue
+1351
-0
config.js
src/router/config.js
+8
-1
No files found.
src/components/TravelManager/TravelNewQuotation/quotationEdit.vue
0 → 100644
View file @
097110fb
<
style
>
@import
"../../../assets/css/newTravelManager.css"
;
.CostNewPrice
.el-form-item__content
,
.CostNewPrice
.el-form-item__label
{
line-height
:
30px
;
}
.CostNewPrice
.CP_halfWi
{
width
:
45%
;
}
.CostNewPrice
.QuotationFirstDiv1
{
padding-top
:
30px
;
}
.CostNewPrice
.CP_ComTitle2
{
color
:
#106BAF
;
font-weight
:
bold
;
background-color
:
#D1EEEE
;
white-space
:
nowrap
;
}
.CostNewTable
{
border-collapse
:
collapse
;
}
.CostNewTable
td
{
height
:
40px
;
border
:
1px
solid
#106BAF
!important
;
border-collapse
:
collapse
;
padding
:
0
3px
;
}
.CostNewTable
.el-input
.el-input__inner
{
height
:
25px
!important
;
border
:
none
;
border-bottom
:
1px
solid
#606266
;
padding-left
:
5px
!important
;
}
.CP_ComTitle
{
color
:
#106BAF
;
}
.w70
{
width
:
70px
!important
;
}
.CostcomCenter
{
text-align
:
center
;
}
.txtRightCost
{
text-align
:
right
;
padding-right
:
10px
;
}
.CostNewPrice
.el-form-item
{
margin-bottom
:
0
!important
;
}
.offer_select-tag
{
background-color
:
#409eff
!important
;
color
:
white
!important
;
border-color
:
#409eff
!important
;
}
</
style
>
<
template
>
<div
class=
"DirectQuotation clearfix"
v-loading=
"loading"
>
<div
class=
"singlePrice DirectPriceCenter"
>
<el-form>
<div
class=
"QuotationFirstDiv1"
>
<table>
<tr>
<th>
{{
$t
(
'objFill.v101.kaituants'
)
}}
</th>
<th
colspan=
"5"
style=
"text-align:left;line-height:40px;"
>
<p
style=
"color:red;font-weight:bold;"
>
1.
{{
$t
(
'objFill.v101.changuitdyshnp'
)
}}
2.
{{
$t
(
'objFill.v101.xiaobtcgbjd'
)
}}
3.
{{
$t
(
'objFill.v101.dangdybxyjp'
)
}}
</p>
</th>
</tr>
<tr>
<td
width=
"80"
class=
"txtRightCost"
>
{{
$t
(
'objFill.v101.chutuanleix'
)
}}
</td>
<td>
<el-select
class=
"multiple_input"
v-model=
"postData.TeamType"
@
change=
"changeTeamType()"
style=
"width:100px;"
>
<el-option
v-for=
'item in teamList'
:key=
"item.ID"
:label=
"item.Name"
:value=
"item.ID"
>
</el-option>
</el-select>
<template
v-if=
"postData.TeamType==0||postData.TeamType==1"
>
{{
$t
(
'objFill.tuanduilx'
)
}}
<el-select
class=
"multiple_input"
v-model=
"postData.PriceTeamType"
style=
"width:100px;"
>
<el-option
:key=
"0"
:label=
"$t('system.ph_choice')"
:value=
"0"
>
</el-option>
<template
v-for=
"item in TeamListArr"
>
<template
v-if=
"postData.TeamType==0"
>
<el-option
v-if=
"item.Id==1||item.Id==2||item.Id==9"
:key=
"item.Id"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</
template
>
<
template
v-if=
"postData.TeamType==1"
>
<el-option
v-if=
"item.Id==2"
:key=
"item.Id"
:label=
"item.Name"
:value=
"item.Id"
>
</el-option>
</
template
>
</template>
</el-select>
</template>
<
template
v-if=
"postData.TeamType==2"
>
<el-tooltip
content=
"勾选此项,团队报满后,自动生成新团期,新报价单。"
>
<el-checkbox
v-model=
"postData.IsRoll"
:true-label=
"1"
:false-label=
"0"
>
滚动发团
</el-checkbox>
</el-tooltip>
</
template
>
</td>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('advmanager.v_line')}}
</td>
<td>
<el-select
style=
"width:100%"
v-model=
"postData.LineId"
:placeholder=
"$t('pub.pleaseSel')"
@
change=
"changeLine()"
filterable
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'0'
></el-option>
<el-option
v-for=
"item in getLineList"
:label=
'item.LineName'
:value=
'item.LineID'
:key=
'item.LineID'
>
</el-option>
</el-select>
</td>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('advmanager.v_xilie')}}
</td>
<td>
<el-select
style=
"width:100%;"
v-model=
"postData.LineteamId"
:placeholder=
"$t('pub.pleaseSel')"
filterable
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'0'
></el-option>
<el-option
v-for=
"item in LineTeamList"
:label=
'item.LtName'
:value=
'item.LtID'
:key=
'item.LtID'
>
</el-option>
</el-select>
</td>
</tr>
<tr>
<td
colspan=
"6"
style=
"height:20px;"
>
</td>
</tr>
<tr>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('scen.sc_cp')}}
</td>
<td>
<el-select
class=
"multiple_input"
v-model=
"postData.OutBranchId"
filterable
style=
"width:265px;"
>
<el-option
v-for=
'item in companyList'
:key=
"item.id"
:label=
"item.bName"
:value=
"item.id"
>
</el-option>
</el-select>
</td>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('visa.v_xcdays')}}
</td>
<td>
<el-input
class=
"w240 LowNum"
v-model=
"postData.DayNum"
@
keyup
.
native=
"checkInteger(postData,'DayNum');createDayTripPrice()"
maxlength=
"2"
>
<
template
slot=
"append"
>
{{
$t
(
'hotel.hotel_day'
)
}}
</
template
>
</el-input>
<el-input
class=
"w120 LowNum"
v-model=
"postData.NightNum"
@
keyup
.
native=
"checkInteger(postData,'NightNum')"
maxlength=
"2"
>
<
template
slot=
"append"
>
{{
$t
(
'Operation.Op_night'
)
}}
</
template
>
</el-input>
</td>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('fnc.khmingcheng')}}
</td>
<td>
<el-input
v-model=
"postData.CustomerName"
type=
"text"
:placeholder=
"$t('fnc.khmingcheng')"
maxlength=
"200"
>
</el-input>
</td>
</tr>
<tr>
<td
colspan=
"6"
style=
"height:20px;"
>
</td>
</tr>
<tr>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('sm.tuanduibiaoti')}}
</td>
<td
colspan=
"3"
>
<el-input
v-model=
"postData.Title"
type=
"textarea"
:autosize=
"{minRows: 1, maxRows: 2 }"
resize=
"none"
:placeholder=
"$t('objFill.v101.qingtxtdbti')"
maxlength=
"200"
></el-input>
</td>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('hotel.hotel_StarDate')}}
</td>
<td>
<el-date-picker
type=
"dates"
v-model=
"postData.OutDateTimeList"
value-format=
"yyyy-MM-dd"
placeholder
:disabled=
"rParams.TCID>0"
@
change=
"changeDate"
>
</el-date-picker>
</td>
</tr>
<tr>
<td
colspan=
"8"
style=
"height:20px;"
>
</td>
</tr>
<tr>
<td
width=
"80"
class=
"txtRightCost"
>
{{$t('hotel.hotel_choostDate')}}
</td>
<td
colspan=
"5"
>
<
template
v-if=
"postData.OutDateTimeList&&postData.OutDateTimeList.length>0"
>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"点击切换"
placement=
"top"
>
<el-tag
v-for=
"(item,oIndex) in postData.OutDateTimeList"
:key=
"item"
closable
style=
"margin-right:5px;cursor:pointer;"
@
close=
"handleClose(item,oIndex)"
:class=
"item==selectDate?'offer_select-tag': ''"
@
click=
"switchOffer(item)"
>
{{
item
}}
</el-tag>
</el-tooltip>
</
template
>
</td>
</tr>
</table>
</div>
<br
/>
<quotationEditDetails
v-if=
"haveData"
ref=
"CostNewPrice"
:postConfig=
"postData"
:offerSelectDate=
"selectDate"
:AllCurrencyList=
"AllCurrencyList"
@
success=
"refreshPage"
>
</quotationEditDetails>
</el-form>
</div>
<div
class=
"btnFixedDiv"
v-if=
"haveData"
>
<div
class=
"toTop"
>
<i
class=
"iconfont icon-huidaodingbu"
></i>
</div>
<div
class=
"DTSaveBtn"
:class=
"{'disClick':!isSubmit}"
@
click=
"SaveData(2)"
>
{{$t('fnc.tijiao')}}
</div>
<div
class=
"DTSaveBtn"
style=
"display:none;"
>
{{$t('objFill.copy')}}
</div>
<div
class=
"DTSaveBtn caogao"
:class=
"{'disClick':!isSubmit}"
@
click=
"SaveData(1)"
>
<span>
{{$t('pub.saveBtn')}}
</span>
<span>
{{$t('objFill.caogao')}}
</span>
</div>
</div>
</div>
</template>
<
script
>
import
quotationEditDetails
from
"../TravelNewQuotation/quotationEditDetails"
;
export
default
{
components
:
{
quotationEditDetails
:
quotationEditDetails
,
},
computed
:
{
//线路筛选
getLineList
()
{
var
chooseLineList
=
[];
//散拼
if
(
this
.
postData
.
TeamType
==
0
||
this
.
postData
.
TeamType
==
5
)
{
chooseLineList
=
this
.
LineList
.
filter
(
qItem
=>
qItem
.
LineDirection
==
2
);
}
//小包团
else
if
(
this
.
postData
.
TeamType
==
1
)
{
chooseLineList
=
this
.
LineList
.
filter
(
qItem
=>
qItem
.
Is_PacketGroup
==
1
);
}
//当地游
else
if
(
this
.
postData
.
TeamType
==
2
)
{
chooseLineList
=
this
.
LineList
.
filter
(
qItem
=>
qItem
.
LineDirection
==
3
);
}
return
chooseLineList
;
},
},
data
()
{
return
{
haveData
:
false
,
//基本配置
postData
:
{
BatchNum
:
""
,
TCID
:
0
,
OfferId
:
0
,
LineId
:
0
,
LineteamId
:
0
,
Title
:
""
,
DayNum
:
0
,
//天数
NightNum
:
0
,
//晚数
CustomerName
:
""
,
//客户名称
TeamType
:
0
,
//出团类型
PriceTeamType
:
0
,
//团队类型
TravelState
:
1
,
//团控状态(1-草稿,2-待审核,3-审核通过,4-审核拒绝,5已撤销)
OutBranchId
:
""
,
//出团公司
OutDateTimeList
:
[],
//出发时间
IsRoll
:
0
,
//团期报满后是否自动生成新团期,新报价单
SaleOfferPayType
:
""
,
OPId
:
""
,
AssistantList
:
[],
dayCostPriceList
:
[],
//行程报价
OfferArray
:
[]
},
isSubmit
:
true
,
LineList
:
[],
//线路列表
LineTeamList
:
[],
//系列列表
teamList
:
[],
//团队类型列表
TeamListArr
:
[],
//团队子类型
companyList
:
[],
//出团公司列表
AllCurrencyList
:
[],
//币种列表
loading
:
false
,
rParams
:
{
OfferId
:
0
,
TCID
:
0
,
BatchNum
:
""
},
selectDate
:
""
,
//选中的日期
};
},
methods
:
{
//切换日期
switchOffer
(
item
)
{
this
.
haveData
=
false
;
this
.
selectDate
=
item
;
this
.
haveData
=
true
;
},
//日期选择
changeDate
()
{
var
that
=
this
;
if
(
this
.
postData
.
OutDateTimeList
&&
this
.
postData
.
OutDateTimeList
.
length
>
0
)
{
var
rootObj
=
this
.
postData
.
OfferArray
[
0
];
this
.
postData
.
OutDateTimeList
.
forEach
(
subItem
=>
{
var
tempObj
=
that
.
getOfferObj
();
tempObj
.
OutDateTime
=
subItem
;
var
existsObj
=
that
.
postData
.
OfferArray
.
find
((
qitem
)
=>
{
return
qitem
.
OutDateTime
==
subItem
})
//第一个报价在添加日期的
if
(
!
existsObj
)
{
tempObj
=
JSON
.
parse
(
JSON
.
stringify
(
rootObj
));
tempObj
.
OutDateTime
=
subItem
;
that
.
postData
.
OfferArray
.
push
(
tempObj
);
}
this
.
switchOffer
(
tempObj
.
OutDateTime
);
});
}
},
//获取报价单对象
getOfferObj
()
{
var
offerObj
=
{
OfferPayType
:
0
,
//报价单付款方式
SaleOfferPayType
:
0
,
//售价付款方式
OutDateTime
:
""
,
//出发时间
AssistantId
:
""
,
//助理OP[格式:1,2,3]
OPId
:
""
,
//主OP
DMCNum
:
""
,
//地接团号
AssistantList
:
[],
//助理OP数组
CostCurrencyList
:
[],
CostNumberList
:
[],
//报价人数
CurrencyNumberListExt
:
[],
//币种和人数列表
teamPrice
:
{
QuotationId
:
0
,
//主键编号
TeamId
:
0
,
//团期编号
ConfigID
:
0
,
//团队配置编号
OfferId
:
0
,
//报价编号
B2BMemberPrice
:
0
,
//同业会员价
B2BPrice
:
0
,
//同业价格
B2CMemberPrice
:
0
,
//直客会员价,
B2CPrice
:
0
,
//直客价格
ChildNeedPrice
:
0
,
//小孩占床价格,
ChildNoNeedPrice
:
0
,
//小孩不占床价格
BabyPrice
:
0
,
//婴儿价格
BabyChargePrice
:
0
,
//婴儿附加费
OldManChargePrice
:
0
,
//老人附加费
VisaPrice
:
0
,
//签证
OtherPrice
:
0
,
//杂费
SingleRoomPrice
:
0
,
//单房差
SingleDMCPrice
:
0
,
//单地接(成本)
SingleDMCTCPrice
:
0
,
//单地接团售价
RebatePrice
:
0
,
//同行返佣
DiscountPrice
:
0
,
//早鸟优惠
IsSupportChildren
:
1
,
//是否支持儿童出游(1-支持,2-不支持)
SafeMoney
:
0
,
//保险费
PeopleNumber
:
0
,
//人数
AirticketMoney
:
0
,
//机票费用
BackVisaPrice
:
0
,
//退签证费
BackSafeMoney
:
0
,
//退保险费
ContractUrl
:
""
,
//合同地址
PriceRemark
:
""
,
//定价备注
ContractArray
:
[],
TaxPrice
:
0
,
//税金
UnionPrice
:
0
,
//联运价格
NightPrice
:
0
,
//过夜费
},
//团队价格信息
otherPrice
:
{
CostId
:
0
,
//主键编号
ConfigID
:
0
,
//配置编号
OfferId
:
0
,
//报价单编号
InlandAirTicketCurrency
:
0
,
//内陆段机位币种
InlandAirTicketMoney
:
0
,
//内陆段机位金额(每人)
InlandShipTicketCurrency
:
0
,
//内陆段船票币种
InlandShipTicketMoney
:
0
,
//内陆段船票金额(每人)
InlandTrainTicketCurrency
:
0
,
//内陆段火车币种
InlandTrainTicketMoney
:
0
,
//内陆段火车金额(每人)
VisaMoney
:
0
,
//签证费用(每人)
SafeMoney
:
0
,
//保险费用(每人)
LeaderTripMoney
:
0
,
//领队小费
DriverGuideMoney
:
0
,
//司机小费
SalesCommissionMoney
:
0
,
//销售提成
OfficeCommissionMoney
:
0
,
//作业处提成
TripMoney
:
0
,
//小费
GuidePeopleMoney
:
0
,
//导游人头费
AirTicketMoeny
:
0
,
//机票成本费用
KBMoney
:
0
,
//KB人头费
AirTicketShareMoney
:
0
,
//机票分摊费用
TicketShareMoney
:
0
,
//门票分摊费用,
SingleRoomShareMoney
:
0
,
//单房差分摊费用
InlandTrafficShareMoney
:
0
,
//内陆段交通分摊费用
OtherShareMoney
:
0
,
//杂费分摊费用
OtherRemark
:
""
,
//其他价格备注
VisaMoneyCurrencyId
:
0
,
//签证费币种
SafeMoneyCurrencyId
:
0
,
//保险费币种
LeaderTripMoneyCurrencyId
:
0
,
//领队小费币种
DriverGuideMoneyCurrencyId
:
0
,
//司机小费币种
LeaderGuideDriveZhuSu
:
0
,
//领队导游住宿费
GuideMoneyCurrencyId
:
0
,
//导游小费币种
GuideMoney
:
0
,
//导游小费
InternationalAirTicket
:
0
,
//国际段机票
InternationalAirTicketCurrency
:
0
,
//国际段机票币种
GuideComplement
:
0
,
//导游回补
TipComplement
:
0
,
//小费回补
},
//其他报价
};
return
offerObj
;
},
//删除日期
handleClose
(
item
,
index
)
{
if
(
this
.
postData
.
BatchNum
&&
this
.
postData
.
BatchNum
!=
''
)
{
var
postMsg
=
{
BatchNum
:
this
.
postData
.
BatchNum
,
Date
:
item
}
this
.
apipost
(
"travel_post_RemoveTravelOffer"
,
postMsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
}
});
this
.
postData
.
OutDateTimeList
.
splice
(
index
,
1
);
}
else
{
this
.
postData
.
OutDateTimeList
.
splice
(
index
,
1
);
}
if
(
this
.
postData
.
OfferArray
&&
this
.
postData
.
OfferArray
.
length
>
0
)
{
var
sIndex
=
this
.
postData
.
OfferArray
.
findIndex
(
qitem
=>
qitem
.
OutDateTime
==
item
);
this
.
postData
.
OfferArray
.
splice
(
sIndex
,
1
);
}
},
changeTeamType
()
{
this
.
postData
.
LineId
=
0
;
this
.
postData
.
LineteamId
=
0
;
this
.
postData
.
PriceTeamType
=
''
;
if
(
this
.
postData
.
TeamType
==
0
)
{
this
.
postData
.
PriceTeamType
=
1
;
}
},
//获取所有币种
getAllCurrency
()
{
this
.
apipost
(
"financeinfo_post_GetList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
AllCurrencyList
=
res
.
data
.
data
;
this
.
AllCurrencyList
.
forEach
(
item
=>
{
if
(
item
.
ID
==
3
)
{
//徐总说日元默认加0.002
item
.
CurrentRate
=
Number
(
item
.
CurrentRate
)
+
Number
(
0.002
);
}
});
}
});
},
//出团公司
getCompanyList
()
{
this
.
apipost
(
"sellorder_post_GetBranchList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
companyList
=
res
.
data
.
data
;
}
});
},
//线路切换
changeLine
()
{
this
.
getLineTeamList
(
this
.
postData
.
LineId
,
1
);
},
//获取系列列表
getLineTeamList
(
lineId
,
isClear
)
{
if
(
isClear
&&
isClear
==
1
)
{
this
.
postData
.
LineteamId
=
0
;
}
let
msg
=
{
lineID
:
lineId
,
isTOOP
:
1
};
this
.
apipost
(
"team_post_GetList"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
LineTeamList
=
res
.
data
.
data
;
}
});
},
//获取团队类型
getPriceTeamList
()
{
this
.
apipost
(
"travel_get_GetTravelPriceTeamTypeList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
TeamListArr
=
res
.
data
.
data
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{});
},
createDayTripPrice
()
{
var
tempArray
=
this
.
createDayTripPriceItem
(
this
.
postData
.
dayCostPriceList
);
this
.
postData
.
dayCostPriceList
=
tempArray
;
this
.
$forceUpdate
()
},
//生成行程报价
createDayTripPriceItem
(
dayCostPriceList
)
{
if
(
this
.
postData
.
DayNum
>
dayCostPriceList
.
length
)
{
for
(
var
i
=
dayCostPriceList
.
length
;
i
<
this
.
postData
.
DayNum
;
i
++
)
{
//去掉以前默认的交通
var
dayItem
=
{
Id
:
0
,
//主键编号
OfferId
:
0
,
//报价单编号
ConfigId
:
0
,
//配置编号
Title
:
""
,
//行程大点
DayNum
:
i
+
1
,
//行程天数
CurrencyId
:
0
,
//币种
HotelCostPrice
:
0
,
//酒店报价
BusCostPrice
:
0
,
//车辆报价
ScenicCostPrice
:
0
,
//景点报价
BreakfastCostPrice
:
0
,
//早餐报价
LunchCostPrice
:
0
,
//午餐报价
DinnerCostPrice
:
0
,
//晚餐报价
ContainDinnerType
:
0
,
//含餐类型(1-含早餐,2-含晚餐,3-含早晚)
PassFee
:
0
,
//过路费
HotelName
:
""
,
//酒店名称
RebatePrice
:
0
,
//回佣
OtherPrice
:
0
,
//其它费用(保险、司导杂费等)
DinnerIds
:
""
,
//晚餐Id
DinnerName
:
""
,
//晚餐名称
LunchIds
:
""
,
//午餐编号
LunchName
:
""
,
//午餐名称
TicketIds
:
""
,
//景点编号
ScenicList
:
[{
TicketId
:
0
,
TicketName
:
""
,
TicketCostPrice
:
0
},
{
TicketId
:
0
,
TicketName
:
""
,
TicketCostPrice
:
0
},
{
TicketId
:
0
,
TicketName
:
""
,
TicketCostPrice
:
0
}],
//景点JSON数据
TicketName
:
""
,
//景点名称
OtherName
:
""
,
//其它杂支名称
BreakfastName
:
""
,
//早餐名称
};
dayCostPriceList
.
push
(
dayItem
);
}
}
else
{
dayCostPriceList
.
length
=
this
.
postData
.
DayNum
;
}
return
dayCostPriceList
},
//保存数据
SaveData
(
type
)
{
this
.
postData
.
TravelState
=
type
;
// 线路必填
if
(
!
this
.
postData
.
LineId
)
{
this
.
$message
.
error
(
this
.
$t
(
'rule.qxzxuanlu'
))
return
;
}
if
(
this
.
postData
.
OPId
<=
0
||
this
.
postData
.
OPId
==
''
)
{
this
.
$message
.
error
(
this
.
$t
(
'objFill.v101.qingshurzop'
))
return
;
}
if
(
this
.
postData
.
OutDateTimeList
.
length
<
1
)
{
this
.
$message
.
error
(
this
.
$t
(
'objFill.v101.qingxzcfrq'
))
return
;
}
this
.
postData
.
AssistantId
=
""
;
var
flag
=
false
;
if
(
this
.
postData
.
AssistantList
&&
this
.
postData
.
AssistantList
.
length
>
0
)
{
this
.
postData
.
AssistantId
=
this
.
postData
.
AssistantList
.
join
(
','
);
this
.
postData
.
AssistantList
.
forEach
(
sItem
=>
{
if
(
sItem
==
this
.
postData
.
OPId
&&
!
flag
)
{
flag
=
true
;
}
});
}
if
(
flag
)
{
this
.
Error
(
this
.
$t
(
'objFill.v101.zhulopbnhzopcx'
));
return
;
}
this
.
loading
=
true
;
this
.
apipost
(
"travel_post_SetPriceOfferInfo"
,
this
.
postData
,
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
);
this
.
goUrl
(
'newQuotation'
);
}
else
{
this
.
ErrorHtml
(
res
.
data
.
message
);
}
});
},
goUrl
(
path
)
{
this
.
$router
.
push
({
path
:
path
,
query
:
{
}
});
},
//刷新页面
refreshPage
()
{
this
.
getPostData
();
},
getPostData
()
{
this
.
haveData
=
false
;
let
offerId
=
0
;
if
(
this
.
$route
.
query
.
offerid
)
{
offerId
=
this
.
$route
.
query
.
offerid
;
}
let
BatchNum
=
""
;
if
(
this
.
$route
.
query
.
BatchNum
)
{
BatchNum
=
this
.
$route
.
query
.
BatchNum
;
}
let
msg
=
{
offerId
:
offerId
,
TCID
:
0
,
BatchNum
:
BatchNum
};
if
(
this
.
$route
.
query
.
TCID
&&
this
.
$route
.
query
.
TCID
>
0
)
{
msg
.
TCID
=
this
.
$route
.
query
.
TCID
}
this
.
loading
=
true
;
this
.
apipost
(
"travel_get_PriceOfferInfo"
,
msg
,
res
=>
{
console
.
log
(
"travel_get_PriceOfferInfo"
,
res
);
this
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
var
tempData
=
res
.
data
.
data
;
if
(
tempData
.
LineId
&&
tempData
.
LineId
>
0
)
{
this
.
postData
.
LineId
=
tempData
.
LineId
;
}
if
(
tempData
.
LineteamId
&&
tempData
.
LineteamId
>
0
)
{
this
.
postData
.
LineteamId
=
tempData
.
LineteamId
;
}
if
(
tempData
.
Title
&&
tempData
.
Title
!=
''
)
{
this
.
postData
.
Title
=
tempData
.
Title
;
}
if
(
tempData
.
DayNum
&&
tempData
.
DayNum
>
0
)
{
this
.
postData
.
DayNum
=
tempData
.
DayNum
;
}
if
(
tempData
.
NightNum
&&
tempData
.
NightNum
>
0
)
{
this
.
postData
.
NightNum
=
tempData
.
NightNum
;
}
if
(
tempData
.
CustomerName
)
{
this
.
postData
.
CustomerName
=
tempData
.
CustomerName
;
}
if
(
tempData
.
OutDateTime
)
{
this
.
postData
.
OutDateTime
=
tempData
.
OutDateTime
;
}
if
(
tempData
.
OutDateTimeList
)
{
this
.
postData
.
OutDateTimeList
=
tempData
.
OutDateTimeList
;
}
if
(
tempData
.
OutBranchName
&&
tempData
.
OutBranchName
!=
''
)
{
this
.
postData
.
OutBranchId
=
Number
(
tempData
.
OutBranchId
);
}
if
(
tempData
.
IsRoll
)
{
this
.
postData
.
IsRoll
=
tempData
.
IsRoll
;
}
this
.
postData
.
TeamType
=
tempData
.
TeamType
;
this
.
postData
.
PriceTeamType
=
tempData
.
PriceTeamType
;
this
.
postData
.
TravelState
=
tempData
.
TravelState
;
this
.
LineList
=
tempData
.
LineList
;
if
(
tempData
&&
tempData
.
OfferArray
&&
tempData
.
OfferArray
.
length
>
0
)
{
this
.
postData
.
dayCostPriceList
=
tempData
.
OfferArray
[
0
].
dayCostPriceList
;
this
.
postData
.
OfferArray
=
tempData
.
OfferArray
;
this
.
postData
.
OPId
=
tempData
.
OfferArray
[
0
].
OPId
;
var
tempA_Array
=
tempData
.
OfferArray
[
0
].
AssistantList
;
if
(
tempA_Array
&&
tempA_Array
.
length
>
0
)
{
tempA_Array
.
forEach
(
aItem
=>
{
this
.
postData
.
AssistantList
.
push
(
aItem
.
Id
);
})
}
this
.
selectDate
=
tempData
.
OfferArray
[
0
].
OutDateTime
;
}
this
.
haveData
=
true
;
}
else
{
this
.
Error
(
res
.
data
.
message
);
}
},
err
=>
{}
);
},
//团队类型
getTeamList
()
{
this
.
apipost
(
"travel_GetTeamTypeEnumList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
teamList
=
res
.
data
.
data
;
}
});
},
},
created
()
{
if
(
this
.
$route
.
query
.
offerid
&&
this
.
$route
.
query
.
offerid
>
0
)
{
this
.
postData
.
OfferId
=
this
.
$route
.
query
.
offerid
;
this
.
rParams
.
OfferId
=
this
.
$route
.
query
.
offerid
}
if
(
this
.
$route
.
query
.
BatchNum
)
{
this
.
postData
.
BatchNum
=
this
.
$route
.
query
.
BatchNum
;
this
.
rParams
.
BatchNum
=
this
.
$route
.
query
.
BatchNum
;
}
//从团控列表跳转信息
if
(
this
.
$route
.
query
.
TCID
&&
this
.
$route
.
query
.
TCID
>
0
)
{
this
.
postData
.
TCID
=
this
.
$route
.
query
.
TCID
;
this
.
rParams
.
TCID
=
this
.
$route
.
query
.
TCID
;
}
//团控列表跳转参数结束
this
.
getCompanyList
();
this
.
getTeamList
();
this
.
getLineTeamList
();
this
.
getAllCurrency
();
this
.
getPriceTeamList
();
},
mounted
()
{
this
.
getPostData
();
}
};
</
script
>
src/components/TravelManager/TravelNewQuotation/quotationEditDetails.vue
0 → 100644
View file @
097110fb
<
style
>
@import
"../../../assets/css/newTravelManager.css"
;
.CostNewPrice
.el-form-item__content
,
.CostNewPrice
.el-form-item__label
{
line-height
:
30px
;
}
.CostNewPrice
.CP_halfWi
{
width
:
45%
;
}
.CostNewPrice
.QuotationFirstDiv1
{
padding-top
:
30px
;
}
.CostNewPrice
.CP_ComTitle2
{
color
:
#106BAF
;
font-weight
:
bold
;
background-color
:
#D1EEEE
;
white-space
:
nowrap
;
}
.CostNewTable
{
border-collapse
:
collapse
;
}
.CostNewTable
td
{
height
:
40px
;
border
:
1px
solid
#106BAF
!important
;
border-collapse
:
collapse
;
padding
:
0
3px
;
}
.CostNewTable
.el-input
.el-input__inner
{
height
:
25px
!important
;
border
:
none
;
border-bottom
:
1px
solid
#606266
;
padding-left
:
5px
!important
;
}
.CP_ComTitle
{
color
:
#106BAF
;
}
.w70
{
width
:
70px
!important
;
}
.CostcomCenter
{
text-align
:
center
;
}
.txtRightCost
{
text-align
:
right
;
padding-right
:
10px
;
}
.CostNewPrice
.el-form-item
{
margin-bottom
:
0
!important
;
}
</
style
>
<
template
>
<div>
<div
class=
"CostNewPrice clearfix CP_Div"
>
<el-form>
<table
class=
"CostNewTable"
style=
"width:1600px;"
>
<thead>
<tr>
<td
colspan=
"13"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.baojiaxinxi'
)
}}
</td>
</tr>
<tr>
<td
class=
"CP_ComTitle2 CostcomCenter"
style=
"width:120px"
>
{{
$t
(
'hotel.hotel_Currency'
)
}}
</td>
<td
v-for=
'(item,index) in CostCurrencyList'
:key=
"`cc_`+index"
>
{{
item
.
CurrencyName
}}
<span>
<i
class=
"iconfont icon-quxiao"
style=
"display:inline-block;"
@
click=
"DeleteCurrency(index)"
></i>
</span>
</td>
<td
:colspan=
"13-2-CostCurrencyList.length+1"
>
<el-form-item
class=
"w100"
>
<el-select
v-model=
'currencyType'
@
change=
"getRate(currencyType),addCurrency()"
>
<el-option
v-for=
"item in AllCurrencyList"
:label=
'item.Name'
:value=
'item.ID'
:key=
'item.ID'
>
</el-option>
</el-select>
</el-form-item>
</td>
</tr>
<tr>
<td
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'hotel.hotel_CurrentRate'
)
}}
</td>
<td
v-for=
'(item,index) in CostCurrencyList'
:key=
"`cc2_`+index"
>
<el-input
class=
"w100"
v-model=
'item.ExchangeRate'
@
keyup
.
native=
"checkRate(item,'ExchangeRate'),getchange()"
>
</el-input>
</td>
<td
:colspan=
"13-2-CostCurrencyList.length+1"
>
<el-input
class=
"w100"
v-model=
'queryMsg.RateInput'
@
keyup
.
native=
"checkRate(queryMsg,'RateInput'),getchange()"
>
</el-input>
</td>
</tr>
<tr>
<td
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'admin.admin_personNumber'
)
}}
</td>
<td
v-for=
"(item,index) in CostNumberList"
:key=
'item.subCode'
>
<el-input
class=
"w100"
v-model=
'item.PeopleNumber'
@
keyup
.
native=
"checkInteger(item,'PeopleNumber')"
>
</el-input>
<span>
<i
class=
"iconfont icon-quxiao"
@
click=
"DeletePNumber(index),getchange()"
></i>
</span>
</td>
<td
:colspan=
"13-2-CostNumberList.length+1"
>
<el-form-item>
<el-input
:placeholder=
"$t('objFill.qingtxrs')"
v-model=
'priceObj.priceNum'
style=
"width:140px;"
@
keyup
.
native=
"checkInteger(priceObj,'priceNum'),getchange()"
>
<el-button
slot=
"append"
class=
"iconfont icon-img_haha"
@
click=
"addPeoNunber"
></el-button>
</el-input>
</el-form-item>
<div
colspan=
"13"
style=
"color: #f12121;font-weigth: bold;"
>
{{
$t
(
'objFill.v101.tianrrshqindj'
)
}}
"+"
</div>
</td>
</tr>
</thead>
<tr>
<td
rowspan=
"2"
style=
"width:100px"
class=
"CP_ComTitle2 CostcomCenter"
>
Day
</td>
<td
rowspan=
"2"
style=
"width:120px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'hotel.hotel_Currency'
)
}}
</td>
<td
rowspan=
"2"
style=
"width:180px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'Airticket.Air_Trip'
)
}}
</td>
<td
colspan=
"2"
style=
"width:220px;"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'hotel.hotel'
)
}}
</td>
<td
colspan=
"2"
style=
"width:120px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.v101.chetian'
)
}}
</td>
<td
colspan=
"2"
style=
"width:200px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.can'
)
}}
</td>
<td
colspan=
"2"
style=
"width:150px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'scen.sc_piao'
)
}}
</td>
<td
colspan=
"2"
style=
"width:100px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.qitafy'
)
}}
<br
/>
(
{{
$t
(
'objFill.baoxiansdzfd'
)
}}
)
</td>
</tr>
<tr>
<td
style=
"width:150px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'hotel.table_hotelname'
)
}}
</td>
<td
style=
"width:50px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.v101.jiageren'
)
}}
</td>
<td
style=
"width:50px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.chezi'
)
}}
/
{{
$t
(
'hotel.hotel_day'
)
}}
</td>
<td
style=
"width:50px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.guolufei'
)
}}
<br
/>
{{
$t
(
'objFill.v101.tingcheft'
)
}}
</td>
<td
style=
"width:110px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'restaurant.res_resName'
)
}}
<br
/><span
style=
"color:red;"
>
{{
$t
(
'objFill.v101.tianxctmccyjg'
)
}}
</span></td>
<td
style=
"width:90px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.v101.jiagecan'
)
}}
</td>
<td
style=
"width:150px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'visaT.jdname'
)
}}
<br
/>
<span
style=
"color:red;"
>
{{
$t
(
'objFill.v101.tianxjqcaiyjg'
)
}}
</span>
</td>
<td
style=
"width:50px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'objFill.v101.jiageren'
)
}}
</td>
<td
style=
"width:50px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'system.query_airName'
)
}}
</td>
<td
style=
"width:50px"
class=
"CP_ComTitle2 CostcomCenter"
>
{{
$t
(
'Operation.Op_price'
)
}}
</td>
</tr>
<template
v-for=
"(subItem,subIndex) in dayCostPriceList"
>
<tr
:key=
"subIndex"
>
<td
align=
"center"
>
{{
$t
(
'tips.di'
)
}}{{
subItem
.
DayNum
}}{{
$t
(
'hotel.hotel_day'
)
}}
<br
/>
{{
GetDayStr
(
subItem
.
DayNum
-
1
)
}}
</td>
<td>
<el-form-item>
<el-select
v-model=
'subItem.CurrencyId'
class=
"w100"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'defaultSelect'
></el-option>
<el-option
v-for=
"items in CostCurrencyList"
:label=
'items.CurrencyName'
:value=
'items.CurrencyId'
:key=
'items.CurrencyId'
>
</el-option>
</el-select>
</el-form-item>
</td>
<td>
<el-input
type=
"textarea"
resize=
"none"
style=
"width:180px;"
v-model=
"subItem.Title"
></el-input>
</td>
<td>
<el-select
filterable
remote
:remote-method=
"(query) => remoteSearchAdGroup(query, subItem)"
v-model=
'subItem.HotelId'
:placeholder=
"$t('objFill.qingshurujdmc')"
:loading=
"loading"
@
change=
"getHotel(subItem,subItem.HotelId)"
style=
"width:135px;"
>
<el-option
v-for=
"(x) in subItem.HotelList"
:key=
"x.ID"
:label=
"x.Name"
:value=
'x.ID'
>
</el-option>
</el-select>
<el-form-item
:label=
"$t('objFill.v101.hancan')"
>
<el-select
v-model=
'subItem.ContainDinnerType'
style=
"width:100px;"
:placeholder=
"$t('objFill.v101.hancanlxin')"
@
change=
"DinnerTypeChange(subItem)"
>
<el-option
:label=
"$t('objFill.v101.hancanlxin')"
:value=
'0'
></el-option>
<el-option
:label=
"$t('objFill.hanzaocan')"
:value=
'1'
></el-option>
<el-option
:label=
"$t('objFill.hanwancan')"
:value=
'2'
></el-option>
<el-option
:label=
"$t('objFill.v101.hanzaowanc')"
:value=
'3'
></el-option>
</el-select>
</el-form-item>
</td>
<td>
<el-input
type=
'text'
v-model=
"subItem.HotelCostPrice"
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'HotelCostPrice'),getchange(1)"
:placeholder=
"$t('objFill.v101.jiudianjge')"
></el-input>
<template
v-if=
"subItem.IsHotelChange"
>
<font
style=
"color:red;"
>
<template
v-if=
"subItem.HotelChangeValue>0"
>
+
</
template
>
{{subItem.HotelChangeValue}}
<br
/>
({{subItem.HotelChangeRemark}})
</font>
</template>
</td>
<td>
<el-input
type=
'text'
v-model=
"subItem.BusCostPrice"
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'BusCostPrice'),getchange(1)"
:placeholder=
"$t('objFill.chezi')"
>
</el-input>
<
template
v-if=
"subItem.IsBusChange"
>
<font
style=
"color:red;"
>
<template
v-if=
"subItem.BusChangeValue>0"
>
+
</
template
>
{{subItem.BusChangeValue}}
<br
/>
({{subItem.BusChangeRemark}})
</font>
</template>
</td>
<td>
<el-input
type=
'text'
v-model=
"subItem.PassFee"
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'PassFee'),getchange(1)"
:placeholder=
"$t('objFill.v101.guolfqcfei')"
>
</el-input>
</td>
<td>
<
template
v-if=
"postConfig.LineId==14||postConfig.LineId==118"
>
<el-form-item
:label=
"$t('objFill.v101.zaocanmc')"
label-width=
"16px"
>
<el-input
:placeholder=
"$t('objFill.v101.myOrdersAllType.qingshurctmc')"
v-model=
"subItem.BreakfastName"
style=
"width:160px"
>
<i
slot=
"suffix"
class=
"el-input__icon el-icon-search"
style=
"cursor:pointer;"
@
click=
"showDiningDig(subItem,1)"
></i>
</el-input>
</el-form-item>
<el-form-item
:label=
"$t('objFill.v101.wucanmc')"
label-width=
"16px"
>
<el-input
:placeholder=
"$t('objFill.v101.myOrdersAllType.qingshurctmc')"
v-model=
"subItem.LunchName"
style=
"width:160px"
>
<i
slot=
"suffix"
class=
"el-input__icon el-icon-search"
style=
"cursor:pointer;"
@
click=
"showDiningDig(subItem,2)"
></i>
</el-input>
</el-form-item>
<el-form-item
:label=
"$t('objFill.v101.wancaimc')"
label-width=
"16px"
>
<el-input
:placeholder=
"$t('objFill.v101.myOrdersAllType.qingshurctmc')"
v-model=
"subItem.DinnerName"
style=
"width:160px;"
>
<i
slot=
"suffix"
class=
"el-input__icon el-icon-search"
style=
"cursor:pointer;"
@
click=
"showDiningDig(subItem,3)"
></i>
</el-input>
</el-form-item>
</
template
>
<
template
v-else
>
{{
$t
(
'objFill.v101.zaocanmc'
)
}}
:
<el-input
type=
"text"
:disabled=
"(subItem.ContainDinnerType==1||subItem.ContainDinnerType==3)?true:false"
v-model=
'subItem.BreakfastName'
class=
"w120"
:placeholder=
"$t('objFill.v101.zaocanmc')"
>
</el-input>
<br
/>
{{
$t
(
'objFill.v101.wucanmc'
)
}}
:
<el-input
type=
"text"
v-model=
'subItem.LunchName'
class=
"w120"
:placeholder=
"$t('objFill.v101.wucanmc')"
></el-input>
<br
/>
{{
$t
(
'objFill.v101.wancaimc'
)
}}
:
<el-input
type=
"text"
:disabled=
"(subItem.ContainDinnerType==2||subItem.ContainDinnerType==3)?true:false"
v-model=
'subItem.DinnerName'
class=
"w120"
:placeholder=
"$t('objFill.v101.wancaimc')"
></el-input>
</
template
>
</td>
<td>
<
template
v-if=
"postConfig.LineId==14||postConfig.LineId==118"
>
{{
$t
(
'objFill.v101.zaocanmc'
)
}}
:
<el-input
type=
"text"
:disabled=
"true"
v-model=
'subItem.BreakfastCostPrice'
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'BreakfastCostPrice'),getchange(1)"
></el-input>
<br
/>
{{
$t
(
'objFill.v101.wucanmc'
)
}}
:
<el-input
type=
"text"
v-model=
'subItem.LunchCostPrice'
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'LunchCostPrice'),getchange(1)"
:disabled=
"true"
></el-input>
<br
/>
{{
$t
(
'objFill.v101.wancaimc'
)
}}
:
<el-input
type=
"text"
:disabled=
"true"
v-model=
'subItem.DinnerCostPrice'
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'DinnerCostPrice'),getchange(1)"
></el-input>
</
template
>
<
template
v-else
>
{{
$t
(
'objFill.v101.zaocanmc'
)
}}
:
<el-input
type=
"text"
:disabled=
"(subItem.ContainDinnerType==1||subItem.ContainDinnerType==3)?true:false"
v-model=
'subItem.BreakfastCostPrice'
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'BreakfastCostPrice'),getchange(1)"
></el-input>
<br
/>
{{
$t
(
'objFill.v101.wucanmc'
)
}}
:
<el-input
type=
"text"
v-model=
'subItem.LunchCostPrice'
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'LunchCostPrice'),getchange(1)"
></el-input>
<br
/>
{{
$t
(
'objFill.v101.wancaimc'
)
}}
:
<el-input
type=
"text"
:disabled=
"(subItem.ContainDinnerType==2||subItem.ContainDinnerType==3)?true:false"
v-model=
'subItem.DinnerCostPrice'
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'DinnerCostPrice'),getchange(1)"
></el-input>
</
template
>
</td>
<td>
<
template
v-for=
"(scenicItem,scenicIndex) in subItem.ScenicList"
>
<template
v-if=
"scenicIndex==0"
>
<el-select
:key=
"`d_`+subIndex+`_sn_`+scenicIndex"
filterable
remote
:remote-method=
"(query) => remoteSearchTicket(query, scenicItem)"
:loading=
"loading"
@
change=
"changeTicket(scenicItem)"
v-model=
"scenicItem.TicketId"
value-key=
"TicketId"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'defaultSelect'
></el-option>
<el-option
v-for=
"(x) in scenicItem.TicketSourceList"
:key=
"x.TicketId"
:label=
"x.TicketName"
:value=
'x.TicketId'
>
</el-option>
</el-select>
</
template
>
<
template
v-else-if=
"scenicIndex!=0 && subItem.ScenicList[scenicIndex-1].TicketId>0"
>
<el-select
:key=
"`d_`+subIndex+`_sn_`+scenicIndex"
filterable
remote
:remote-method=
"(query) => remoteSearchTicket(query, scenicItem)"
:loading=
"loading"
@
change=
"changeTicket(scenicItem)"
v-model=
"scenicItem.TicketId"
value-key=
"TicketId"
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'defaultSelect'
></el-option>
<el-option
v-for=
"(x) in scenicItem.TicketSourceList"
:key=
"x.TicketId"
:label=
"x.TicketName"
:value=
'x.TicketId'
>
</el-option>
</el-select>
</
template
>
</template>
</td>
<td>
<
template
v-for=
"(scenicItem,scenicIndex) in subItem.ScenicList"
>
<template
v-if=
"scenicIndex==0"
>
<el-input
:key=
"`d_`+subIndex+`_sc_`+scenicIndex"
type=
'text'
v-model=
"scenicItem.TicketCostPrice"
class=
"w70"
@
keyup
.
native=
"checkPrice(scenicItem,'TicketCostPrice'),getchange(1)"
:placeholder=
"$t('objFill.v101.jindianjiag')"
>
</el-input>
</
template
>
<
template
v-else-if=
"scenicIndex!=0 && subItem.ScenicList[scenicIndex-1].TicketId>0"
>
<el-input
:key=
"`d_`+subIndex+`_sc_`+scenicIndex"
type=
'text'
v-model=
"scenicItem.TicketCostPrice"
class=
"w70"
@
keyup
.
native=
"checkPrice(scenicItem,'TicketCostPrice'),getchange(1)"
:placeholder=
"$t('objFill.v101.jindianjiag')"
>
</el-input>
</
template
>
</template>
</td>
<td>
<el-input
type=
"text"
v-model=
'subItem.OtherName'
class=
"w70"
:placeholder=
"$t('objFill.v101.zazhiminc')"
></el-input>
</td>
<td>
<el-input
type=
"text"
v-model=
'subItem.OtherPrice'
class=
"w70"
@
keyup
.
native=
"checkPrice(subItem,'OtherPrice'),getchange(1)"
></el-input>
</td>
</tr>
</template>
<tr>
<td
colspan=
"3"
class=
"CP_ComTitle2 CostcomCenter"
>
{{$t('objFill.waibixj')}}
</td>
<!--酒店小计-->
<td
colspan=
"2"
>
{{$t('objFill.jiudianxj')}}: {{getDayXiaoJi(1,1)}}
</td>
<!--车资小计-->
<td
colspan=
"2"
>
{{$t('objFill.chezhixj')}}: {{getDayXiaoJi(2,1)}}
</td>
<!--餐小计-->
<td
colspan=
"2"
>
{{$t('objFill.canxj')}}: {{getDayXiaoJi(4,1)}}
</td>
<!--门票小计-->
<td
colspan=
"2"
>
{{$t('objFill.menpiaoxj')}}: {{getDayXiaoJi(3,1)}}
</td>
<!--其它费用小计-->
<td
colspan=
"2"
>
{{$t('objFill.zazhixj')}}: {{getDayXiaoJi(9,1)}}
</td>
</tr>
<tr>
<td
colspan=
"3"
class=
"CP_ComTitle2 CostcomCenter"
>
{{$t('objFill.renmingbxj')}}
</td>
<!--酒店小计-->
<td
colspan=
"2"
>
{{$t('objFill.jiudianxj')}}: {{getDayXiaoJi(1,2)}}
</td>
<!--车资小计-->
<td
colspan=
"2"
>
{{$t('objFill.chezhixj')}}:{{getDayXiaoJi(2,2)}}
</td>
<!--餐小计-->
<td
colspan=
"2"
>
{{$t('objFill.canxj')}}: {{getDayXiaoJi(4,2)}}
</td>
<!--门票小计-->
<td
colspan=
"2"
>
{{$t('objFill.menpiaoxj')}}: {{getDayXiaoJi(3,2)}}
</td>
<!--其它费用小计-->
<td
colspan=
"2"
>
{{$t('objFill.zazhixj')}}: {{getDayXiaoJi(9,2)}}
</td>
</tr>
<tr>
<td
colspan=
"13"
>
{{$t('objFill.qitacbrmb')}}
</td>
</tr>
<
template
>
</
template
>
<tr>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('active.cl_jipiao')"
label-position=
"right"
>
<el-input
type=
"text"
v-model=
'otherPrice.AirTicketMoeny'
class=
"w100"
@
keyup
.
native=
"checkPrice(otherPrice,'AirTicketMoeny'),getchange()"
></el-input>
</el-form-item>
</td>
<td>
<el-form-item
:label=
"$t('objFill.zhongduanjp')"
>
<el-input
type=
"text"
v-model=
'otherPrice.InlandAirTicketMoney'
class=
"w100"
@
keyup
.
native=
"checkPrice(otherPrice,'InlandAirTicketMoney'),getchange()"
></el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('objFill.v101.dmc.meildhvpmr')"
>
<el-input
type=
"text"
v-model=
'otherPrice.InlandTrainTicketMoney'
class=
"w100"
@
keyup
.
native=
"checkPrice(otherPrice,'InlandTrainTicketMoney'),getchange()"
></el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('objFill.shuijin')"
>
<el-input
type=
"text"
v-model=
'teamPrice.TaxPrice'
class=
"w100"
@
keyup
.
native=
"checkPrice(teamPrice,'TaxPrice'),getchange()"
></el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('salesModule.Union')"
>
<el-input
type=
"text"
v-model=
'teamPrice.UnionPrice'
class=
"w100"
@
keyup
.
native=
"checkPrice(teamPrice,'UnionPrice'),getchange()"
></el-input>
</el-form-item>
</td>
<td
colspan=
"4"
rowspan=
"2"
>
{{$t('objFill.xiaojijpzdsjly')}}:
<br
/>
{{getOtherCostMoney()}}
</td>
</tr>
<tr>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('objFill.lingduidyft')"
>
<el-input
type=
'text'
class=
"w100"
v-model=
"otherPrice.AirTicketShareMoney"
@
keyup
.
native=
"checkPrice(otherPrice,'AirTicketShareMoney'),getchange()"
></el-input>
</el-form-item>
</td>
<td>
<el-form-item
:label=
"$t('objFill.guoye')"
>
<el-input
type=
"text"
v-model=
'teamPrice.NightPrice'
class=
"w100"
@
keyup
.
native=
"checkPrice(teamPrice,'NightPrice'),getchange()"
></el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('active.cl_qianzheng')"
>
<el-input
type=
"text"
v-model=
'teamPrice.VisaPrice'
class=
"w100"
@
keyup
.
native=
"checkPrice(teamPrice,'VisaPrice'),getchange()"
></el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('Operation.Op_insurance')"
>
<el-input
type=
'text'
class=
"w100"
v-model=
"otherPrice.SafeMoney"
@
keyup
.
native=
"checkPrice(otherPrice,'SafeMoney'),getchange()"
></el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"`KB`+$t('objFill.rentoufei')"
>
<el-input
type=
"text"
v-model=
'otherPrice.KBMoney'
class=
"w100"
@
keyup
.
native=
"checkPrice(otherPrice,'KBMoney',true),getchange()"
></el-input>
</el-form-item>
</td>
</tr>
<tr>
<td
colspan=
"13"
></td>
</tr>
<tr>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('Operation.Op_baby')"
>
<el-input
v-model=
"teamPrice.BabyPrice"
@
keyup
.
native=
"checkInteger(teamPrice,'BabyPrice')"
class=
"w70"
>
</el-input>
</el-form-item>
</td>
<td>
<el-form-item
:label=
"$t('objFill.dandijcb')"
>
<el-input
v-model=
"teamPrice.SingleDMCPrice"
@
keyup
.
native=
"checkInteger(teamPrice,'SingleDMCPrice')"
@
change=
"getchange()"
class=
"w70"
>
</el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('salesModule.DJNum')"
>
<el-input
placeholder=
""
v-model=
"offerDataObj.DMCNum"
class=
"w150"
>
</el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('Operation.Op_singleRoomcha')"
>
<el-input
placeholder=
""
v-model=
"teamPrice.SingleRoomPrice"
@
keyup
.
native=
"checkPrice(teamPrice,'SingleRoomPrice')"
class=
"w70"
>
</el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('objFill.dandijjg')"
>
<el-input
placeholder=
""
v-model=
"teamPrice.SingleDMCTCPrice"
@
keyup
.
native=
"checkPrice(teamPrice,'SingleDMCTCPrice')"
class=
"w70"
>
</el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('Operation.Op_childNobed')"
>
<el-input
placeholder=
""
v-model=
"teamPrice.ChildNoNeedPrice"
@
keyup
.
native=
"checkInteger(teamPrice,'ChildNoNeedPrice')"
class=
"w70"
>
</el-input>
</el-form-item>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('Operation.Op_childBed')"
>
<el-input
placeholder=
""
v-model=
"teamPrice.ChildNeedPrice"
@
keyup
.
native=
"checkInteger(teamPrice,'ChildNeedPrice')"
class=
"w70"
>
</el-input>
</el-form-item>
</td>
</tr>
<tr>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('Operation.Op_zhu')+`OP`"
>
<el-select
class=
"w100"
v-model=
"postConfig.OPId"
:placeholder=
"$t('pub.pleaseSel')"
filterable
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'0'
></el-option>
<el-option
v-for=
"(item,index) in EmployeeList"
:label=
"item.EmName"
:value=
"item.EmployeeId"
:key=
"index"
>
</el-option>
</el-select>
</el-form-item>
<span
style=
"color:red"
>
{{$t('objFill.v101.guanltcqzqtx')}}
</span>
</td>
<td
colspan=
"3"
>
<el-form-item
:label=
"$t('objFill.zhuli')+`OP`"
>
<el-select
class=
"w250"
v-model=
"postConfig.AssistantList"
:placeholder=
"$t('pub.pleaseSel')"
filterable
multiple
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'0'
></el-option>
<el-option
v-for=
"(item,index) in EmployeeList"
:label=
"item.EmName"
:value=
"item.EmployeeId"
:key=
"index"
></el-option>
</el-select>
</el-form-item>
<span
style=
"color:red"
>
{{$t('objFill.v101.meigydddpeiz')}}
</span>
</td>
<td
colspan=
"2"
>
<el-form-item
:label=
"$t('fnc.fkfangshi')"
>
<el-select
class=
"w70"
v-model=
"postConfig.SaleOfferPayType"
:placeholder=
"$t('pub.pleaseSel')"
filterable
>
<el-option
:label=
"$t('pub.unlimitedSel')"
:value=
'0'
></el-option>
<el-option
v-for=
"item in payTypeList"
:label=
'item.label'
:value=
'item.value'
:key=
'item.value'
>
</el-option>
</el-select>
</el-form-item>
</td>
<td
colspan=
"6"
>
{{$t('objFill.fj')}}:
<el-upload
v-if=
"!teamPrice.ContractArray || !teamPrice.ContractArray.length"
class=
"upload-demo"
style=
"display:inline-block;position:relative;top:-1px;left:3px;"
:http-request=
"UploadAttachment"
:show-file-list=
"false"
action=
""
>
<el-button
size=
"small"
type=
"primary"
>
{{$t('objFill.bjdfj')}}
</el-button>
</el-upload>
<
template
v-if=
"teamPrice.ContractArray&& teamPrice.ContractArray.length>0"
>
<template
v-for=
"(subItem,subIndex) in teamPrice.ContractArray"
>
<a
style=
"margin-left:20px;color:blue;cursor:pointer;"
target=
"_blank"
:key=
"subIndex"
@
click=
"downloadFile(subItem.Url,subItem.Name)"
>
{{
subItem
.
Name
}}
</a>
<a
:key=
"subIndex+1000"
style=
"margin-left:20px;color:blue;cursor:pointer;"
@
click=
"DeleteFile(subIndex)"
>
{{
$t
(
'system.table_delete'
)
}}
</a>
</
template
>
</template>
</td>
</tr>
<tr>
<td
colspan=
"13"
></td>
</tr>
<tfoot>
<tr>
<td>
</td>
<td>
{{$t('admin.admin_personNumber')}}
</td>
<td
colspan=
"2"
>
{{$t('objFill.v101.jiudccmzji')}}
</td>
<td>
{{$t('objFill.dijiechengben')}}
<br
/>
({{$t('fnc.waibi')}})
</td>
<td>
{{$t('objFill.dijiechengben')}}
<br
/>
({{$t('fnc.a_rminbi')}})
</td>
<td
colspan=
"2"
>
{{$t('hotel.hotel_cost')}}
<br
/>
[{{$t('objFill.v101.dandjqtcbrmbxj')}}]
</td>
<td>
{{$t('objFill.tongyexsjg')}}
<br
/>
<!--台湾印象和日本印象-->
<
template
v-if=
"postConfig.OutBranchId==1218||postConfig.OutBranchId==1220"
>
(
{{
$t
(
'objFill.ribi'
)
}}
)
</
template
>
<!--印尼印象-->
<
template
v-else-if=
"postConfig.OutBranchId==1252"
>
(
{{
$t
(
'fnc.a_ynd'
)
}}
)
</
template
>
<
template
v-else
>
(
{{
$t
(
'fnc.a_rminbi'
)
}}
)
</
template
>
</td>
<td>
{{$t('objFill.zhikexsjg')}}
<br
/>
<!--台湾印象和日本印象-->
<
template
v-if=
"postConfig.OutBranchId==1218||postConfig.OutBranchId==1220"
>
(
{{
$t
(
'objFill.ribi'
)
}}
)
</
template
>
<!--印尼印象-->
<
template
v-else-if=
"postConfig.OutBranchId==1252"
>
(
{{
$t
(
'fnc.a_ynd'
)
}}
)
</
template
>
<
template
v-else
>
(
{{
$t
(
'fnc.a_rminbi'
)
}}
)
</
template
>
</td>
<td>
<!--台湾印象和日本印象-->
<
template
v-if=
"postConfig.OutBranchId==1218||postConfig.OutBranchId==1220"
>
<template
v-if=
"postConfig.LineId==14||postConfig.LineId==118"
>
{{
$t
(
'Airticket.Air_salesPrice'
)
}}
<br
/>
(
{{
$t
(
'objFill.ribi'
)
}}
)
</
template
>
</template>
</td>
<td
colspan=
"2"
>
{{$t('fnc.beizhu')}}
</td>
</tr>
<!--已填写人数-->
<
template
v-if=
"CostNumberList&&CostNumberList.length>0"
>
<template
v-for=
"(subItem,subIndex) in CostNumberList"
>
<tr
:key=
"subIndex"
>
<td
v-if=
"subIndex==0"
:rowspan=
"CostNumberList.length"
>
{{
$t
(
'fnc.a_heji'
)
}}
</td>
<td>
{{
subItem
.
PeopleNumber
}}
</td>
<td
colspan=
"2"
>
{{
getDayXiaoJi
(
1
,
1
)
}}
(
{{
$t
(
'objFill.jiu'
)
}}
)+
{{
(
getDayXiaoJi
(
2
,
1
)
/
subItem
.
PeopleNumber
).
toFixed
(
2
)
}}
(
{{
$t
(
'objFill.v101.chezczcyrs'
)
}}
)+
{{
getDayXiaoJi
(
4
,
1
)
}}
(
{{
$t
(
'objFill.can'
)
}}
)+
{{
getDayXiaoJi
(
3
,
1
)
}}
(
{{
$t
(
'scen.sc_piao'
)
}}
)
+
{{
(
getDayXiaoJi
(
9
,
1
)
/
subItem
.
PeopleNumber
).
toFixed
(
2
)
}}
(
{{
$t
(
'objFill.v101.zazhizzzcyrsK'
)
}}
)
</td>
<td>
{{
getLocalJpyMoney
(
subItem
.
PeopleNumber
)
}}
</td>
<td>
<template
v-if=
"teamPrice&&teamPrice.SingleDMCPrice&&teamPrice.SingleDMCPrice>0"
>
{{
teamPrice
.
SingleDMCPrice
}}
</
template
>
<
template
v-else-if=
"postConfig.LineId==14||postConfig.LineId==118"
>
{{
getLocalMoney
(
subItem
.
PeopleNumber
)
}}
</
template
>
<
template
v-else-if=
"postConfig.LineId==168"
>
{{
getLocalMoney
(
subItem
.
PeopleNumber
)
}}
</
template
>
<
template
v-else
>
{{
subItem
.
SubtotalMoney
}}
</
template
>
</td>
<td
colspan=
"2"
>
{{subItem.TotalMoney}}
</td>
<td>
<el-input
type=
'text'
class=
"w120"
v-model=
"subItem.SalePrice"
@
keyup
.
native=
"checkPrice(subItem,'SalePrice')"
maxlength=
"8"
></el-input>
</td>
<td>
<el-input
type=
'text'
class=
"w120"
v-model=
"subItem.B2CSalePrice"
@
keyup
.
native=
"checkPrice(subItem,'B2CSalePrice')"
maxlength=
"8"
></el-input>
</td>
<td>
<!--台湾印象和日本印象-->
<
template
v-if=
"postConfig.OutBranchId==1218||postConfig.OutBranchId==1220"
>
<el-input
v-if=
"postConfig.LineId==14||postConfig.LineId==118"
type=
'text'
class=
"w70"
v-model=
"subItem.JPYSalePrice"
@
keyup
.
native=
"checkPrice(subItem,'JPYSalePrice')"
maxlength=
"8"
>
</el-input>
</
template
>
</td>
<td
colspan=
"2"
>
<el-input
type=
"textarea"
v-model=
"subItem.CostRemark"
></el-input>
</td>
</tr>
</template>
</template>
</tfoot>
</table>
<div
class=
"Cost_Line"
>
</div>
</el-form>
</div>
<el-dialog
custom-class=
'w750'
:title=
"dialogDiningTitle"
:visible
.
sync=
"isShowDiningDig"
center
>
<travelDinner
v-if=
"isShowDiningDig"
:qMsg=
"qMsg"
@
chooseDinner=
"chooseDinner"
@
closeDinner=
"closeDialog"
:otherDinner=
"otherDinner"
:breakFirstList=
"breakFirstList"
></travelDinner>
</el-dialog>
</div>
</template>
<
script
>
import
travelDinner
from
'@/components/commonPage/travelDinner'
export
default
{
props
:
[
"postConfig"
,
"AllCurrencyList"
,
"offerSelectDate"
],
watch
:
{
postConfig
:
{
handler
:
function
(
val
,
oldVal
)
{
if
(
val
!=
oldVal
)
{
this
.
getOfferItemObj
(
1
);
}
},
deep
:
true
},
offerSelectDate
:
{
handler
:
function
(
val
,
oldVal
)
{
if
(
val
!=
oldVal
)
{
this
.
getOfferItemObj
(
2
);
}
},
deep
:
true
}
},
data
()
{
return
{
dayCostPriceList
:
this
.
postConfig
.
dayCostPriceList
,
otherPrice
:
{},
teamPrice
:
{},
CostNumberList
:
[],
CurrencyNumberListExt
:
this
.
postConfig
.
OfferArray
[
0
].
CurrencyNumberListExt
,
CostCurrencyList
:
this
.
postConfig
.
OfferArray
[
0
].
CostCurrencyList
,
offerDataObj
:
{},
//下拉框默认值
defaultSelect
:
0
,
//币种下拉
currencyType
:
""
,
queryMsg
:
{
canEdit
:
true
,
IsDefault
:
false
,
//汇率输入
RateInput
:
""
,
//人数
PeopleNumber
:
""
},
priceObj
:
{
priceNum
:
""
,
//人数
},
payTypeList
:
[{
value
:
1
,
label
:
'现金'
},
{
value
:
2
,
label
:
'汇款'
},
{
value
:
3
,
label
:
'外站自理'
}],
loading
:
false
,
EmployeeList
:
[],
//员工列表
dialogDiningTitle
:
this
.
$t
(
'objFill.v101.myOrdersAllType.xuanzhect'
),
qMsg
:
{
Country
:
651
,
DinnerType
:
0
,
//1-早餐,2-午餐,3-晚餐
},
clickDinner
:
{},
isShowDiningDig
:
false
,
//是否显示选择餐弹窗
breakFirstList
:
[],
//午餐、晚餐默认类型
otherDinner
:
[],
//早餐默认类型
}
},
components
:
{
travelDinner
:
travelDinner
,
},
methods
:
{
//获取选中的日期
getOfferItemObj
(
type
)
{
console
.
log
(
"getOfferItemObj_"
+
type
,
this
.
postConfig
);
var
selectOfferObj
=
{};
if
(
this
.
postConfig
&&
this
.
postConfig
.
OfferArray
&&
this
.
postConfig
.
OfferArray
.
length
>
0
)
{
selectOfferObj
=
this
.
postConfig
.
OfferArray
.
find
((
qitem
)
=>
{
return
qitem
.
OutDateTime
==
this
.
offerSelectDate
})
}
console
.
log
(
"selectOfferObj_"
+
type
,
selectOfferObj
);
if
(
selectOfferObj
)
{
this
.
otherPrice
=
selectOfferObj
.
otherPrice
;
this
.
teamPrice
=
selectOfferObj
.
teamPrice
;
this
.
CostNumberList
=
selectOfferObj
.
CostNumberList
;
this
.
offerDataObj
=
selectOfferObj
;
}
return
selectOfferObj
;
},
changeTicket
(
subItem
)
{
if
(
subItem
.
TicketSourceList
&&
subItem
.
TicketSourceList
.
length
>
0
)
{
var
changeObj
=
subItem
.
TicketSourceList
.
find
(
qitem
=>
qitem
.
TicketId
==
subItem
.
TicketId
);
if
(
changeObj
)
{
subItem
.
TicketName
=
changeObj
.
TicketName
;
}
}
},
getHotelInit
()
{
setTimeout
(()
=>
{
if
(
this
.
dayCostPriceList
&&
this
.
dayCostPriceList
.
length
>
0
)
{
let
arrList
=
function
(
list
)
{
list
.
forEach
(
x
=>
{
x
.
HotelList
=
[];
x
.
LunchList
=
[];
x
.
DinnerList
=
[];
x
.
TicketSourceList
=
[];
})
}
arrList
(
this
.
dayCostPriceList
)
for
(
let
i
=
0
;
i
<
this
.
dayCostPriceList
.
length
;
i
++
)
{
if
(
this
.
dayCostPriceList
[
i
].
HotelName
!=
''
)
{
this
.
initHotel
(
this
.
dayCostPriceList
[
i
].
HotelName
,
this
.
dayCostPriceList
[
i
],
i
)
}
}
}
},
100
);
},
refreshPage
(
rType
)
{
//刷新页面
this
.
isShowDiningDig
=
false
;
this
.
clickDinner
=
{};
this
.
qMsg
.
DinnerType
=
0
;
this
.
changMsg
.
isShowChangeOffer
=
false
;
this
.
changMsg
.
EditType
=
0
;
this
.
changMsg
.
DayNum
=
0
;
if
(
rType
&&
rType
==
1
)
{
this
.
$emit
(
"success"
);
}
},
//关闭弹窗
closeDialog
()
{
this
.
isShowDiningDig
=
false
;
this
.
clickDinner
=
{};
this
.
qMsg
.
DinnerType
=
0
;
this
.
changMsg
.
isShowChangeOffer
=
false
;
this
.
changMsg
.
EditType
=
0
;
this
.
changMsg
.
DayNum
=
0
;
},
chooseDinner
(
obj
)
{
if
(
this
.
qMsg
.
DinnerType
==
1
)
{
this
.
clickDinner
.
BreakfastName
=
obj
.
DiningName
;
}
else
if
(
this
.
qMsg
.
DinnerType
==
2
)
{
this
.
clickDinner
.
LunchName
=
obj
.
DiningName
;
this
.
clickDinner
.
LunchCostPrice
=
obj
.
UnitPrice
;
this
.
clickDinner
.
LunchIds
=
obj
.
DiningId
;
}
else
if
(
this
.
qMsg
.
DinnerType
==
3
)
{
this
.
clickDinner
.
DinnerName
=
obj
.
DiningName
;
this
.
clickDinner
.
DinnerCostPrice
=
obj
.
UnitPrice
;
this
.
clickDinner
.
DinnerIds
=
obj
.
DiningId
;
}
this
.
isShowDiningDig
=
false
;
this
.
clickDinner
=
{};
this
.
qMsg
.
DinnerType
=
0
;
},
showDiningDig
(
item
,
dinnerType
)
{
this
.
qMsg
.
DinnerType
=
dinnerType
;
this
.
clickDinner
=
item
;
this
.
isShowDiningDig
=
true
;
},
GetDayStr
(
dayNum
)
{
var
str
=
""
;
if
(
this
.
postConfig
.
OutDateTime
&&
this
.
postConfig
.
OutDateTime
!=
''
)
{
var
dateFormat
=
new
Date
(
this
.
postConfig
.
OutDateTime
);
dateFormat
=
dateFormat
.
setDate
(
dateFormat
.
getDate
()
+
dayNum
);
dateFormat
=
new
Date
(
dateFormat
);
let
y
=
dateFormat
.
getFullYear
()
let
m
=
(
dateFormat
.
getMonth
()
+
1
).
toString
().
padStart
(
2
,
'0'
)
let
d
=
dateFormat
.
getDate
().
toString
().
padStart
(
2
,
'0'
)
str
=
`
${
y
}
-
${
m
}
-
${
d
}
`
;
}
return
str
;
},
// 获取酒店名称
getHotel
(
subItem
,
HotelId
)
{
subItem
.
HotelList
.
forEach
(
x
=>
{
if
(
x
.
ID
==
HotelId
)
{
subItem
.
HotelName
=
x
.
Name
}
})
this
.
$forceUpdate
()
},
remoteSearchAdGroup
(
query
,
subItem
)
{
if
(
query
!==
''
)
{
this
.
loading
=
true
;
this
.
initHotel
(
query
,
subItem
)
}
else
{
subItem
.
HotelList
=
[]
}
},
//景点搜索
remoteSearchTicket
(
query
,
subItem
)
{
if
(
query
!==
''
)
{
this
.
loading
=
true
;
this
.
getTicketQuery
(
query
,
subItem
)
}
else
{
subItem
.
TicketSourceList
=
[];
}
},
//获取景点列表
getTicketQuery
(
keyWords
,
subItem
)
{
this
.
apipost
(
"ticketcoupons_post_GetOfferTicketCouponsList"
,
{
Name
:
keyWords
},
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
subItem
.
TicketSourceList
=
res
.
data
.
data
this
.
$forceUpdate
()
}
},
null
);
},
// 获取餐厅名称
getDinner
(
subItem
,
dinnerType
,
dinnerIds
)
{
if
(
dinnerType
==
2
)
{
subItem
.
LunchList
.
forEach
(
x
=>
{
if
(
x
.
ID
==
dinnerIds
)
{
subItem
.
LunchName
=
x
.
Name
;
subItem
.
LunchCostPrice
=
x
.
UnitPrice
;
}
})
}
else
if
(
dinnerType
==
3
)
{
subItem
.
DinnerList
.
forEach
(
x
=>
{
if
(
x
.
ID
==
dinnerIds
)
{
subItem
.
DinnerName
=
x
.
Name
;
subItem
.
DinnerCostPrice
=
x
.
UnitPrice
;
}
})
}
this
.
$forceUpdate
()
},
//初始化酒店列表
initHotel
(
query
,
subItem
,
day
)
{
this
.
apipost
(
"hotel_post_GetList"
,
{
Name
:
query
},
res
=>
{
this
.
loading
=
false
if
(
res
.
data
.
resultCode
==
1
)
{
if
(
day
==
null
)
{
for
(
let
i
=
0
;
i
<
this
.
dayCostPriceList
.
length
;
i
++
)
{
if
(
!
this
.
dayCostPriceList
[
i
].
HotelList
||
this
.
dayCostPriceList
[
i
].
HotelList
.
length
==
0
)
{
this
.
dayCostPriceList
[
i
].
HotelList
=
res
.
data
.
data
}
}
if
(
subItem
&&
(
subItem
.
HotelList
||
subItem
.
HotelList
.
length
>
0
))
{
subItem
.
HotelList
=
res
.
data
.
data
}
}
else
if
(
day
!=
null
)
{
this
.
dayCostPriceList
[
day
].
HotelList
=
res
.
data
.
data
}
this
.
$forceUpdate
()
}
},
null
);
},
//删除文件
DeleteFile
(
subIndex
)
{
this
.
teamPrice
.
ContractArray
.
splice
(
subIndex
,
1
);
},
//下载文件
downloadFile
(
fileUrl
,
fileName
)
{
const
link
=
document
.
createElement
(
'a'
);
link
.
href
=
fileUrl
;
link
.
download
=
fileName
;
document
.
body
.
appendChild
(
link
);
link
.
click
();
},
UploadAttachment
(
file
)
{
//上传
let
newArr
=
[];
newArr
.
push
(
file
.
file
)
let
path
=
"/Upload/Temporary/"
this
.
$message
.
info
(
this
.
$t
(
'tips.shangchuanzhong'
))
this
.
UploadSelfFileT
(
path
,
newArr
,
x
=>
{
var
newUrl
=
this
.
domainManager
().
ViittoFileUrl
+
x
.
data
.
FilePath
;
this
.
teamPrice
.
ContractArray
.
push
({
Name
:
x
.
data
.
SourceFileName
,
Url
:
newUrl
});
this
.
teamPrice
.
ContractUrl
=
newUrl
;
this
.
Success
(
this
.
$t
(
'tips.scchenggong'
))
});
},
//含餐类型切换
DinnerTypeChange
(
subItem
)
{
switch
(
subItem
.
ContainDinnerType
)
{
//含早餐
case
1
:
subItem
.
BreakfastCostPrice
=
0
;
break
;
//含晚餐
case
2
:
subItem
.
DinnerCostPrice
=
0
;
break
;
case
3
:
subItem
.
BreakfastCostPrice
=
0
;
subItem
.
DinnerCostPrice
=
0
;
break
;
}
},
//每天小计
getDayXiaoJi
(
type
,
currencyType
)
{
var
xiaoJi
=
0
;
if
(
this
.
dayCostPriceList
&&
this
.
dayCostPriceList
.
length
>
0
)
{
this
.
dayCostPriceList
.
forEach
(
item
=>
{
var
currencyRate
=
1
;
if
(
currencyType
==
2
)
{
currencyRate
=
this
.
getCurrencyMoney
(
item
.
CurrencyId
);
}
//酒店
if
(
type
==
1
)
{
xiaoJi
+=
Number
(
item
.
HotelCostPrice
)
*
Number
(
currencyRate
);
}
//车
if
(
type
==
2
)
{
xiaoJi
+=
Number
(
item
.
BusCostPrice
)
*
Number
(
currencyRate
);
//过路费
xiaoJi
+=
Number
(
item
.
PassFee
)
*
Number
(
currencyRate
);
}
//景点
if
(
type
==
3
)
{
if
(
item
.
ScenicList
&&
item
.
ScenicList
.
length
>
0
)
{
item
.
ScenicList
.
forEach
(
sItem
=>
{
if
(
sItem
.
TicketName
!=
''
||
sItem
.
TicketId
>
0
)
{
xiaoJi
+=
Number
(
sItem
.
TicketCostPrice
)
*
Number
(
currencyRate
);
}
})
}
}
//餐合计
if
(
type
==
4
)
{
xiaoJi
+=
Number
(
item
.
BreakfastCostPrice
)
*
Number
(
currencyRate
);
xiaoJi
+=
Number
(
item
.
DinnerCostPrice
)
*
Number
(
currencyRate
);
xiaoJi
+=
Number
(
item
.
LunchCostPrice
)
*
Number
(
currencyRate
);
}
//回佣
if
(
type
==
8
)
{
xiaoJi
+=
Number
(
item
.
RebatePrice
)
*
Number
(
currencyRate
);
}
//杂费
if
(
type
==
9
)
{
xiaoJi
+=
Number
(
item
.
OtherPrice
)
*
Number
(
currencyRate
);
}
});
}
return
xiaoJi
.
toFixed
(
0
);
},
//获取汇率
getCurrencyMoney
(
currencyId
)
{
let
currency
=
1
;
if
(
this
.
CostCurrencyList
&&
this
.
CostCurrencyList
.
length
>
0
)
{
this
.
CostCurrencyList
.
forEach
(
x
=>
{
if
(
x
.
CurrencyId
==
currencyId
)
{
currency
=
x
.
ExchangeRate
;
}
});
}
return
currency
;
},
//获取币种名称
getCurrencyName
(
currencyId
)
{
let
CurrencyName
=
""
;
if
(
this
.
CostCurrencyList
&&
this
.
CostCurrencyList
.
length
>
1
)
{
this
.
CostCurrencyList
.
forEach
(
x
=>
{
if
(
x
.
CurrencyId
==
currencyId
)
{
CurrencyName
=
x
.
CurrencyName
;
}
});
}
return
CurrencyName
;
},
//判断币种是否相等
checkExists
(
CurrencyId
)
{
var
flag
=
false
;
if
(
this
.
CurrencyNumberListExt
&&
this
.
CurrencyNumberListExt
.
length
>
0
)
{
this
.
CurrencyNumberListExt
.
forEach
(
item
=>
{
if
(
!
flag
&&
item
.
Key
==
CurrencyId
)
{
flag
=
true
;
}
});
}
return
flag
;
},
//其它成本价格
getOtherCostMoney
()
{
//机票+中段机票+火车票+税金+领队导游分摊+联运+过夜+保险
let
otherMoney
=
this
.
getConvertMoney
(
this
.
otherPrice
.
AirTicketMoeny
)
+
this
.
getConvertMoney
(
this
.
otherPrice
.
InlandAirTicketMoney
)
+
this
.
getConvertMoney
(
this
.
teamPrice
.
TaxPrice
)
+
this
.
getConvertMoney
(
this
.
teamPrice
.
UnionPrice
)
+
this
.
getConvertMoney
(
this
.
otherPrice
.
AirTicketShareMoney
)
+
this
.
getConvertMoney
(
this
.
teamPrice
.
NightPrice
)
+
this
.
getConvertMoney
(
this
.
teamPrice
.
VisaPrice
)
+
this
.
getConvertMoney
(
this
.
otherPrice
.
InlandTrainTicketMoney
)
+
this
.
getConvertMoney
(
this
.
otherPrice
.
SafeMoney
)
-
this
.
getConvertMoney
(
this
.
otherPrice
.
KBMoney
)
return
otherMoney
;
},
//获取币种对应 的人数报价
getCurrencyNumberList
(
CurrencyId
)
{
let
currencyNumberList
=
[];
let
flag
=
false
;
if
(
this
.
CurrencyNumberListExt
&&
this
.
CurrencyNumberListExt
.
length
>
0
)
{
this
.
CurrencyNumberListExt
.
forEach
(
item
=>
{
if
(
!
flag
&&
item
.
Key
==
CurrencyId
)
{
flag
=
true
;
currencyNumberList
=
item
.
currencyNumberList
;
}
});
}
return
currencyNumberList
;
},
//添加币种
addCurrency
()
{
var
currencyId
=
this
.
currencyType
;
var
ckedName
;
var
ckedRate
=
this
.
queryMsg
.
RateInput
;
if
(
currencyId
==
""
)
{
this
.
Info
(
this
.
$t
(
'rule.qxzbzhong'
));
return
;
}
if
(
ckedRate
==
""
)
{
this
.
Info
(
this
.
$t
(
'rule.qsrhuilv'
));
return
;
}
this
.
AllCurrencyList
.
forEach
(
x
=>
{
if
(
currencyId
==
x
.
ID
)
{
ckedName
=
x
.
Name
;
}
});
if
(
this
.
$tripUtils
.
isInObjArr
(
this
.
CostCurrencyList
,
"CurrencyId"
,
currencyId
)
)
{
this
.
Info
(
this
.
$t
(
'objFill.v101.dmc.bizyjcz'
));
return
;
}
var
CurObj
=
this
.
$tripUtils
.
CostCurrency
();
CurObj
.
CurrencyName
=
ckedName
;
CurObj
.
ExchangeRate
=
ckedRate
;
CurObj
.
CurrencyId
=
currencyId
;
this
.
CostCurrencyList
.
push
(
CurObj
);
this
.
currencyType
=
""
;
this
.
queryMsg
.
RateInput
=
""
;
let
currencyNumberItem
=
{
Key
:
currencyId
,
currencyNumberList
:
[]
};
if
(
this
.
CurrencyNumberListExt
.
length
>
0
)
{
if
(
this
.
CurrencyNumberListExt
[
0
].
currencyNumberList
.
length
>
0
)
{
this
.
CurrencyNumberListExt
[
0
].
currencyNumberList
.
forEach
(
x
=>
{
let
tempData
=
JSON
.
parse
(
JSON
.
stringify
(
x
));
tempData
.
CurrencyId
=
currencyId
;
tempData
.
Money
=
0.0
;
currencyNumberItem
.
currencyNumberList
.
push
(
tempData
);
}
);
}
}
this
.
CurrencyNumberListExt
.
push
(
currencyNumberItem
);
//默认添加币种第一个币种
if
(
this
.
dayCostPriceList
&&
this
.
dayCostPriceList
.
length
>
0
)
{
this
.
dayCostPriceList
.
forEach
(
subItem
=>
{
subItem
.
CurrencyId
=
currencyId
;
})
}
},
//添加人数费用
addPeoNunber
()
{
var
PeopleNumber
=
this
.
priceObj
.
priceNum
;
if
(
PeopleNumber
==
""
)
{
this
.
Info
(
this
.
$t
(
'objFill.v101.SalesModule.col2.t4'
));
return
;
}
if
(
this
.
$tripUtils
.
isInObjArr
(
this
.
CostNumberList
,
"PeopleNumber"
,
PeopleNumber
)
)
{
this
.
Info
(
this
.
$t
(
'objFill.v101.dmc.renshuyjcz'
));
return
;
}
var
CostNumberObj
=
this
.
$tripUtils
.
CostNumber
();
CostNumberObj
.
PeopleNumber
=
PeopleNumber
;
this
.
CostNumberList
.
push
(
CostNumberObj
);
this
.
CurrencyNumberListExt
.
forEach
(
x
=>
{
var
CurrencyNumberObj
=
this
.
$tripUtils
.
CurrencyNumber
();
CurrencyNumberObj
.
CurrencyId
=
x
.
Key
;
CurrencyNumberObj
.
PeopleNumber
=
PeopleNumber
;
x
.
currencyNumberList
.
push
(
CurrencyNumberObj
);
});
this
.
priceObj
.
priceNum
=
""
;
this
.
queryMsg
.
PeopleNumber
=
""
;
this
.
queryMsg
.
Money
=
""
;
this
.
shortPeopleNumber
();
},
//删除币种
DeleteCurrency
(
index
)
{
this
.
CostCurrencyList
.
splice
(
index
,
1
);
},
//删除人数
DeletePNumber
(
index
)
{
this
.
CostNumberList
.
splice
(
index
,
1
);
},
//人数排序
shortPeopleNumber
()
{
this
.
CurrencyNumberListExt
.
forEach
(
x
=>
{
x
.
currencyNumberList
.
sort
(
this
.
$commonUtils
.
createComprisonFunction
(
"PeopleNumber"
)
);
});
this
.
CostNumberList
.
sort
(
this
.
$commonUtils
.
createComprisonFunction
(
"PeopleNumber"
)
);
},
//币种下拉获取汇率
getRate
(
ID
)
{
this
.
AllCurrencyList
.
forEach
(
x
=>
{
if
(
x
.
ID
==
ID
)
{
this
.
queryMsg
.
RateInput
=
x
.
CurrentRate
;
}
});
},
//计算总价
getSubMoney
()
{
let
that
=
this
;
if
(
this
.
CostNumberList
&&
this
.
CostNumberList
.
length
>
0
)
{
this
.
CostNumberList
.
forEach
(
x
=>
{
//房餐车景点价格
var
trip
=
Number
(
that
.
getLocalMoney
(
x
.
PeopleNumber
));
var
jpyTrip
=
Number
(
that
.
getLocalJpyMoney
(
x
.
PeopleNumber
));
//其他价格
var
otherPrice
=
Number
(
that
.
getOtherCostMoney
());
var
jpyotherPrice
=
0
;
var
SingleDMCPrice
=
0
;
if
(
that
.
teamPrice
&&
that
.
teamPrice
.
SingleDMCPrice
)
{
SingleDMCPrice
=
Number
(
that
.
teamPrice
.
SingleDMCPrice
);
}
x
.
TotalMoney
=
(
otherPrice
+
SingleDMCPrice
).
toFixed
(
0
);
x
.
JPYTotalMoney
=
(
jpyTrip
+
jpyotherPrice
).
toFixed
(
2
);
});
}
},
//价格转换器
getConvertMoney
(
value
)
{
if
(
value
===
""
||
value
===
undefined
||
value
===
null
)
{
value
=
0.0
;
}
return
parseFloat
(
value
);
},
//获取地接项目(人民币)
getLocalMoney
(
PeopleNumber
)
{
let
dijieMoney
=
0.0
;
if
(
PeopleNumber
<=
0
)
{
PeopleNumber
=
1
;
}
var
hotelPrice
=
Number
(
this
.
getDayXiaoJi
(
1
,
2
));
//酒店费用
var
sencePrice
=
Number
(
this
.
getDayXiaoJi
(
3
,
2
));
//景点费用
var
canPrice
=
Number
(
this
.
getDayXiaoJi
(
4
,
2
));
//餐
var
otherPrice
=
Number
(
this
.
getDayXiaoJi
(
9
,
2
))
/
PeopleNumber
;
//其它费用
var
busFee
=
Number
(
this
.
getDayXiaoJi
(
2
,
2
))
/
PeopleNumber
;
//车费
dijieMoney
=
busFee
+
hotelPrice
+
sencePrice
+
canPrice
+
otherPrice
;
dijieMoney
=
dijieMoney
.
toFixed
(
2
);
return
dijieMoney
;
},
//获取地接项目报价(日元)
getLocalJpyMoney
(
PeopleNumber
)
{
if
(
PeopleNumber
<=
0
)
{
PeopleNumber
=
1
;
}
let
jpydijieMoney
=
0.0
;
var
busFee
=
Number
(
this
.
getDayXiaoJi
(
2
,
1
))
/
PeopleNumber
;
var
hotelPrice
=
Number
(
this
.
getDayXiaoJi
(
1
,
1
));
//酒店费用
var
sencePrice
=
Number
(
this
.
getDayXiaoJi
(
3
,
1
));
//景点费用
var
canPrice
=
Number
(
this
.
getDayXiaoJi
(
4
,
1
));
//早餐
var
otherPrice
=
Number
(
this
.
getDayXiaoJi
(
9
,
1
))
/
PeopleNumber
;
//其它费用
jpydijieMoney
=
busFee
+
hotelPrice
+
sencePrice
+
canPrice
+
otherPrice
;
return
jpydijieMoney
.
toFixed
(
2
);
},
getchange
(
type
)
{
var
that
=
this
;
var
tempPrice
=
0
;
if
(
this
.
CostNumberList
&&
this
.
CostNumberList
.
length
>
0
)
{
this
.
CostNumberList
.
forEach
(
x
=>
{
//房餐车景点价格
tempPrice
=
Number
(
that
.
getLocalMoney
(
x
.
PeopleNumber
));
});
}
if
(
this
.
teamPrice
.
SingleDMCPrice
<=
0
||
(
type
&&
type
==
1
))
{
this
.
teamPrice
.
SingleDMCPrice
=
tempPrice
.
toFixed
(
0
);
}
this
.
getSubMoney
();
},
//员工列表
getEmployeeList
()
{
let
userInfo
=
this
.
getLocalStorage
();
let
msg
=
{
GroupId
:
userInfo
.
RB_Group_id
,
BranchId
:
"-1"
,
DepartmentId
:
"-1"
,
PostId
:
"-1"
,
IsLeave
:
"0"
};
this
.
apipost
(
"admin_get_EmployeeGetList"
,
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
EmployeeList
=
res
.
data
.
data
;
}
}
);
},
//获取配置餐厅信息
getConfigDinnerList
()
{
this
.
apipost
(
"travel_get_GetConfigDinnerList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
breakFirstList
=
res
.
data
.
data
.
breakFirstList
;
this
.
otherDinner
=
res
.
data
.
data
.
otherDinner
;
}
},
err
=>
{}
);
}
},
mounted
()
{
this
.
getHotelInit
();
this
.
getSubMoney
();
},
created
()
{
this
.
getEmployeeList
();
this
.
getConfigDinnerList
();
this
.
getOfferItemObj
(
0
);
}
};
</
script
>
src/router/config.js
View file @
097110fb
...
@@ -3828,7 +3828,14 @@ export default {
...
@@ -3828,7 +3828,14 @@ export default {
title
:
'制作报价单'
title
:
'制作报价单'
},
},
},
},
{
//新版制作报价单
path
:
'/quotationEdit'
,
name
:
'quotationEdit'
,
component
:
resolve
=>
require
([
'@/components/TravelManager/TravelNewQuotation/quotationEdit'
],
resolve
),
meta
:
{
title
:
'制作报价单'
},
},
{
//报价单变更
{
//报价单变更
path
:
'/OfferChange'
,
path
:
'/OfferChange'
,
name
:
'OfferChange'
,
name
:
'OfferChange'
,
...
...
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