Commit 913bedc4 authored by 沈良进's avatar 沈良进
parents c0fd7c84 f0d2b0db
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -248,7 +248,7 @@ ...@@ -248,7 +248,7 @@
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.HotelList = res.data.data; this.HotelList = res.data.data;
} else { } else {
message.errorMsg(res.data.message); this.Error(res.data.message)
} }
}, },
err => {} err => {}
......
...@@ -2543,7 +2543,7 @@ ...@@ -2543,7 +2543,7 @@
}, },
(res) => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.minPrice = res.data.data.LowDeposit; this.minPrice = res.data.data&&res.data.data.LowDeposit;
} }
}, },
(err) => {} (err) => {}
......
<style>
@import "../../assets/css/newTravelManager.css";
.productQuerySearch {
width: 100%;
min-height: auto;
overflow: hidden;
padding: 0 0 20px 0;
}
.productQuerySearch li {
float: left;
font-size: 12px;
color: #666;
margin: 20px 0 0px 0;
}
.productQuerySearch li>span {
display: inline-block;
}
.productQuerySearch li span>em {
display: inline-block;
min-width: 60px;
text-align: right;
font-style: normal;
margin: 0 12px 0 0;
}
.productQuerySearch li:last-child {
position: fixed;
z-index: 50;
top: 36px;
right: 20px;
}
.productQuerySearch ul {
position: relative;
overflow: hidden;
}
.productQueryList {
width: 100%;
min-width: 1366px;
padding-left: 10px;
}
.productQueryList li {
width: 100%;
border: 1px solid #e5e5e5;
background: #fff;
margin-bottom: 10px;
color: #333;
font-size: 14px;
}
.productQueryList li::after {
content: "";
display: block;
clear: both;
}
.productQueryList li i.iconfont {
color: #bbb;
margin-right: 8px;
}
.productQueryList li>div:first-child {
display: table;
width: 100%;
}
.productQueryList li>div>div {
display: table-cell;
border-right: 1px dashed #dcdfe6;
}
.productQueryList li>div>div:last-child {
border-right: none;
}
.productQueryList li .d11 {
float: left;
width: 160px;
height: 120px;
margin: 14px 14px 0 14px;
}
.productQueryList li .d11>li {
width: 160px;
height: 120px;
border: none;
}
.productQueryList li .d11>li>img {
width: 160px;
height: 120px;
}
.productQueryList li .d12 {
float: left;
padding-top: 18px;
width: 200px;
}
.productQueryList li .d12 .d12p {
margin-top: 3px;
font-size: 12px;
color: #999;
cursor: pointer;
max-height: 40px;
line-height: 20px;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.productQueryList li .d12 .d12p:hover {
text-decoration: underline;
color: #333;
}
.productQueryList li .d12 .d12TC {
margin: 5px 0;
color: #666666;
font-size: 12px;
}
.productQueryList li .d1 {
width: 18%;
position: relative;
padding: 0 20px;
}
.productQueryList li .d2 {
width: 14%;
text-align: center;
padding-top: 20px;
}
.productQueryList li .d2 p.flightNo {
background: #ccc;
width: 136px;
margin: 5px 0;
padding: 0 10px;
height: 22px;
line-height: 22px;
display: inline-block;
font-size: 14px;
}
.productQueryList li .d2 p.flightNo em {
font-style: normal;
color: #333;
font-size: 12px;
font-weight: bold;
}
.productQueryList li .d2 p.flightNo .flem {
height: 22px;
width: 50px;
display: inline-block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.productQueryList li .d2 p>span {
color: #fff;
font-size: 12px;
border-radius: 10px;
background: #2aaef2;
padding: 2px 5px;
cursor: pointer;
}
.productQueryList li .d2>div>div {
display: inline-block;
line-height: 24px;
font-size: 12px;
}
.productQueryList li .d3 {
width: 17%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d3 p {
line-height: 24px;
}
.productQueryList li .d3 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d3 p>em {
background: #ff9c00;
font-style: normal;
margin-left: 8px;
color: #fff;
border-radius: 4px;
padding: 2px 5px;
}
.productQueryList li .d4 {
width: 10%;
padding-left: 20px;
padding-top: 20px;
}
.productQueryList li .d4 p span.price {
color: #333;
text-decoration: underline;
font-size: 12px;
}
.productQueryList li .d4 p span.price:hover {
color: #e95252;
font-weight: bold;
cursor: pointer;
}
.productQueryList li .d5 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d5 p {
line-height: 26px;
}
.productQueryList li .d5 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d5 p>i {
font-weight: bold;
font-style: normal;
}
.productQueryList li .d8 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d8 p {
line-height: 26px;
}
.productQueryList li .d8 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d8 p>i {
font-style: normal;
}
.productQueryList li .d6 {
padding: 20px 40px;
width: 100%;
height: inherit;
border-top: 1px solid #e5e5e5;
}
.productQueryList li .d6 p {
display: table-cell;
color: #e95252;
}
.productQueryList li .d6 p:nth-child(1) {
width: 60px;
font-size: 12px;
}
.productQueryList li .d7 {
width: 10%;
text-align: center;
padding: 40px 0 0 40px;
border-right: none;
}
.productQueryList li .d7 button {
width: 30px;
height: 30px;
border-radius: 4px;
}
.productQueryList li .d7 .el-button--primary {
padding: 5px;
margin: 0;
font-size: 14px !important;
color: #fff;
}
.productQueryList li .d7 i.iconfont {
color: #fff;
margin: 0;
}
.elPopoverLayer {
padding: 0px 10px;
}
.elPopoverLayer p {
line-height: 34px;
font-size: 12px;
}
.elPopoverLayer p>i {
font-style: normal;
border: 1px solid #999;
padding: 0 3px;
font-size: 12px;
margin-right: 10px;
font-weight: bold;
color: #333;
}
.elPopoverLayer p>span {
display: inline-block;
width: 130px;
}
.elPopoverLayer p>span>b {
margin-left: 10px;
color: #2aaef2;
}
.superSearchLayer>p {
padding: 20px 0;
font-size: 14px;
color: #333;
font-weight: bold;
}
.superSearchLayer>div {
margin-top: 20px;
color: #666;
font-size: 12px;
}
.superSearchLayer>div>span {
margin: 0 15px 0 5px;
}
.pro_tripDetails {
padding: 0;
box-shadow: 0px 1px 3px 0px #dedede;
max-height: 400px;
overflow-y: auto;
}
.pro_tripDetails .popper__arrow::after {
border-bottom-color: #ededed !important;
}
.pro_tripDetails table {
padding: 10px 0 0 20px;
background-color: #ededed;
border-collapse: collapse;
border: 1px solid #d2d2d2;
font-size: 12px;
}
.pro_tripDetails table th {
background-color: #ededed;
padding: 5px;
}
.pro_tripDetails table td {
background-color: #ffffff;
padding: 9px 15px;
color: #333333;
border: 1px solid #d2d2d2;
}
.pro_tripDetails table td._d_name {
background-color: #ededed;
}
.pro_tripDetails table ._color_666 {
color: #666666;
}
.pro_tripDetails table tr._color_666 th {
padding: 9px 15px;
}
.productQuerybottomLayer {
overflow: auto;
position: fixed;
height: 600px;
z-index: 50;
bottom: 0;
left: 0;
border-top: 3px solid #38425d;
background-color: #ffffff;
padding: 10px 10px 0;
width: 100%;
}
.productQuerybottomLayer .el-form-item__label {
font-size: 12px !important;
}
.productQuerybottomLayer>p {
border-left: 3px solid #e95252;
text-indent: 15px;
height: 16px;
font-family: "PingFangSc-Fine";
font-size: 16px;
margin-bottom: 20px;
line-height: 14px;
color: #000;
}
.productQuerybottomLayer .el-input {
width: auto !important;
}
.productQueryList .disabledBtn {
background: #999 !important;
border-color: #999 !important;
}
.product_union {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union::after {
content: "联";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_union1 {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union1::after {
content: "内";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_warning {
position: absolute;
top: 0px;
right: 0px;
width: 0px;
height: 0px;
border-top: 10px solid red;
border-bottom: 10px solid transparent;
border-left: 10px solid transparent;
border-right: 10px solid red;
}
.product_warning::after {
content: "!";
position: absolute;
top: -12px;
right: -5px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.PQ_detail {
width: 100%;
border-collapse: collapse;
}
.PQ_detail tr th,
.v-table-title-cell {
background: #e6e6e6;
height: 40px;
font-size: 14px;
border-right: 1px solid #e6e6e6;
color: #333;
}
.PQ_detail tr {
background: #fff;
text-align: center;
height: 40px;
}
.PQ_detail tr td {
font-size: 12px;
border: 1px solid #e5e5e5;
}
.PQ_HotelPop {
overflow: auto;
max-height: 350px;
}
.PQ_HotelPop table td {
padding: 5px 0;
text-align: center;
}
.PQ_HotelPop table th {
text-align: center;
}
.productQuerybottomLayer .el-upload-list {
width: 200px;
}
</style>
<template>
<div class="flexOne">
<div class="productQuerySearch" v-if="!TCIDList">
<ul>
<li>
<span><em>{{ $t("scen.sc_cp") }}</em>
<el-select class="w150" v-model="msg.BranchId" filterable :placeholder="$t('pub.pleaseSel')">
<el-option v-for="item in companyList" :label="item.BName" :value="item.Id" :key="item.Id">
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>{{ $t("advmanager.v_line") }}</em>
<el-select class="w150" v-model="msg.LineId" filterable :placeholder="$t('pub.pleaseSel')" @change="
getLineTeamList(msg.LineId), getAimPlaceList(msg.LineId, '')
">
<el-option :label="$t('pub.unlimitedSel')" value="-1"></el-option>
<el-option v-for="(item,index) in LineList" :label="item.LineName" :value="item.LineID" :key="index">
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>{{ $t("advmanager.v_xilie") }}</em>
<el-select class="w150" v-model="msg.LineTeamId" filterable :placeholder="$t('pub.pleaseSel')"
@change="getAimPlaceList('', msg.LineTeamId)">
<el-option :label="$t('pub.unlimitedSel')" value="-1"></el-option>
<el-option v-for="item in LineTeamList" :label="item.LtName" :value="item.LtID" :key="item.LtID">
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>{{ $t("system.query_dest") }}</em>
<el-select class="w150" v-model="msg.AimPlaceId" filterable :placeholder="$t('pub.pleaseSel')">
<el-option :label="$t('pub.unlimitedSel')" value="-1"></el-option>
<el-option v-for="item in AimPlaceList" :label="item.PlaceName" :value="item.PlaceID" :key="item.PlaceID">
</el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>{{ $t("visa.v_tuanhao") }}</em>
<el-input v-model="msg.TCID" class="w150"></el-input>
</span>
</li>
<li>
<span>
<em>团名</em>
<el-input v-model="msg.Title" class="w150" clearable></el-input>
</span>
</li>
<li>
<span><em>{{ $t("hotel.hotel_StarDate") }}</em>
<el-date-picker v-model="msg.StartTime" @change="dataDui()" class="w135" value-format="yyyy-MM-dd"
type="date"></el-date-picker>
-
<el-date-picker v-model="msg.EndTime" @change="dataDui()" class="w135" value-format="yyyy-MM-dd"
type="date"></el-date-picker>
</span>
</li>
<li>
<span><em>{{ $t("system.table_goCity") }}</em>
<el-select class="w150" v-model="msg.CityId" filterable :placeholder="$t('pub.pleaseSel')">
<el-option :label="$t('pub.unlimitedSel')" value="-1"></el-option>
<el-option v-for="item in startCityList1" :label="item.startCityName" :value="item.ID" :key="item.ID">
</el-option>
</el-select>
</span>
</li>
<li style="
height: 34px;
line-height: 34px;
padding: 0 0 0 20px;
vertical-align: middle;
">
<el-popover width="270" trigger="click">
<div class="superSearchLayer">
<p>{{ $t("visa.v_tkgjcx") }}</p>
<div>
<span>{{ $t("system.query_airCompanyName") }}</span>
<el-select v-model="msg.FlightID" filterable :placeholder="$t('system.ph_buxian')" class="w150">
<el-option :label="$t('pub.unlimitedSel')" value="-1"></el-option>
<el-option v-for="item in airlineList" :key="item.AirLineId" :label="item.AlName"
:value="item.AirLineId">
</el-option>
</el-select>
</div>
<div>
<span>{{ $t("visa.v_xcdays") }}</span>
<el-input class="w150" v-model="msg.DaysTrip" @keyup.native="checkInteger(msg, 'DaysTrip')"></el-input>
</div>
<div>
<span>{{ $t("visa.v_teamnum") }}</span>
<el-input class="w69" v-model="msg.minGroupSize" @keyup.native="checkInteger(msg, 'minGroupSize')">
</el-input>
-
<el-input class="w69" v-model="msg.maxGroupSize" @keyup.native="checkInteger(msg, 'maxGroupSize')">
</el-input>
</div>
<div>
<span>{{ $t("leader.leader_registraNum") }}</span>
<el-input class="w69" v-model="msg.minApplySize" @keyup.native="checkInteger(msg, 'minApplySize')">
</el-input>
-
<el-input class="w69" v-model="msg.maxApplySize" @keyup.native="checkInteger(msg, 'maxApplySize')">
</el-input>
</div>
<div>
<span>{{ $t("Airticket.Air_salesPlatform") }}</span>
<el-select filterable multiple v-model="msg.SalePlat" :placeholder="$t('system.ph_buxian')"
class="w150 multiple_input">
<el-option v-for="item in salePlace" :key="item.Id" :label="item.Name" :value="item.Id">
</el-option>
</el-select>
</div>
<div>
<input type="button" style="width: 230px !important" class="normalBtn" :value="$t('pub.searchBtn')"
@click="
getList();
resetPageIndex();
" />
</div>
</div>
<span slot="reference" style="cursor: pointer">{{ $t("visa.v_gjchaxun") }}<i
class="el-icon-caret-bottom"></i></span>
</el-popover>
</li>
<li style="
height: 34px;
line-height: 34px;
padding: 0 0 0 20px;
vertical-align: middle;
">
<el-popover width="260" trigger="click">
<div>
<div class="TC_queryTitle">
{{ $t("Operation.Op_TeamWarningSearch") }}
</div>
<div class="clearfix">
<div class="TC_leftSearch">
<div>
<span style="
display: inline-block;
margin: 0 5px 0 0;
width: 50px;
text-align: right;
">{{ $t("leader.leader_registraNum") }}</span>
<el-select v-model="msg.WarningQuery" filterable :placeholder="$t('system.ph_buxian')" class="w150">
<el-option :label="$t('system.ph_buxian')" value="-1"></el-option>
<el-option :label="$t('salesModule.Nobaoming')" value="1"></el-option>
<el-option :label="$t('salesModule.Less10')" value="2"></el-option>
<el-option :label="$t('salesModule.More10')" value="3"></el-option>
<el-option :label="$t('salesModule.YWLess5')" value="4"></el-option>
<el-option :label="$t('salesModule.YHBRS')" value="5"></el-option>
</el-select>
</div>
<div>
<span style="
display: inline-block;
margin: 0 5px 0 0;
width: 50px;
text-align: right;
">{{ $t("Operation.Op_daysChoice") }}</span>
<el-select v-model="msg.RateOnDay" filterable :placeholder="$t('system.ph_buxian')" class="w150">
<el-option :label="$t('system.ph_buxian')" value="-1"></el-option>
<el-option :label="$t('salesModule.Inner10')" value="1"></el-option>
<el-option :label="$t('salesModule.Inner15')" value="2"></el-option>
<el-option :label="$t('salesModule.Inner20')" value="3"></el-option>
<el-option :label="$t('salesModule.Out20')" value="4"></el-option>
</el-select>
</div>
<div>
<span style="
display: inline-block;
margin: 0 5px 0 0;
width: 50px;
text-align: right;
">{{ $t("Operation.Op_Attendance") }}</span>
<el-select v-model="msg.RateOn" filterable :placeholder="$t('system.ph_buxian')" class="w150">
<el-option :label="$t('system.ph_buxian')" value="-1"></el-option>
<el-option label="100%" value="1"></el-option>
<el-option :label="$t('salesModule.Nomore80')" value="2"></el-option>
<el-option :label="$t('salesModule.Nomore60')" value="3"></el-option>
<el-option :label="$t('salesModule.Nomore40')" value="4"></el-option>
</el-select>
</div>
</div>
</div>
<button class="normalBtn TC_SearchBtn" @click="
getList();
resetPageIndex();
">
{{ $t("pub.searchBtn") }}
</button>
</div>
<span slot="reference" style="cursor: pointer">{{ $t("Operation.Op_warningSearch")
}}<i class="iconfont icon-xiaotuziCduan_1"></i></span>
</el-popover>
</li>
<li>
<input type="button" class="hollowFixedBtn" :value="$t('pub.searchBtn')" @click="
getList();
resetPageIndex();
" />
</li>
</ul>
</div>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage"
layout="total,prev, pager, next, jumper" :page-size="msg.pageSize" :total="total">
</el-pagination>
<productOrderList :loading="loading" :list="list"></productOrderList>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage"
layout="total,prev, pager, next, jumper" :page-size="msg.pageSize" :total="total">
</el-pagination>
<el-dialog custom-class="ComTeamPlan_info_box" :title="tripTitle" :visible.sync="outerVisible" center>
<commonTeamInfo ref="comTeam"></commonTeamInfo>
</el-dialog>
<el-dialog custom-class="w450" title="行程下载" :visible.sync="travelControlTripLayerShow" center>
<tripDownLoadCommon ref="tripDownLoadCommon" :tripObj="tripObj" @headCallBack="hideTripDown" :downType="1">
</tripDownLoadCommon>
</el-dialog>
<!-- 下单 -->
<div class="buy-box" v-show="isShowTeamOrder">
<orderForm @success="reSearchPage" @close="closeForm"
:PTCID="teamInfo.TCID"
:POrderId="0"
:PBranchId="0"
:PProductType="1"
:showCity="true"
:productObj="teamInfo">
</orderForm>
</div>
</div>
</template>
<script>
import commonTeamInfo from "../commonPage/commonTeamInfo.vue";
import tripDownLoadCommon from "../commonPage/TripDownLoadCommon.vue";
import carousel from "../commonPage/carousel.vue";
import commonHotelInfo from "../commonPage/commonHotelInfo.vue";
import orderForm from "../orderCommon/order-form.vue";
import productOrderList from "../orderCommon/productOrderList.vue";
export default {
data() {
return {
pickerOptions0: {
disabledDate: (time) => {
let starTime = new Date(this.starTime);
return time.getTime() > starTime.getTime();
},
},
pickerOptions1: {
disabledDate: (time) => {
let endTime = new Date(this.endTime);
return time.getTime() < endTime.getTime() - 5.64e7;
},
},
//当前登录用户信息
CurrentUserInfo: {},
travelControlTripLayerShow: false,
wxLoading: false,
HightUnitPrice: "2",
userId: "",
customerId: "",
createByInfo: "",
starTime: "",
endTime: "",
stratPrice: "",
stratPriceShow: false,
returnPrice: "",
returnPriceShow: false,
minPrice: 0,
loading: true,
loading2: false,
outerVisible: false,
tripTitle: "",
currentPage: 1,
total: 0,
addObj: {},
Unit_PriceList: [], //成交单价下拉数据
LessMoney: 0,
addMsg: {
GroupTypeNeedHouse: "0",
OrderId: "0",
OneSex: "0",
TCID: "0",
CustomerType: "",
GroupType: "",
IndustryCategory: "",
ContactName: "",
ContactMobile: "",
CustomerId: "",
DepartureCityId: "",
ReturnArriveCityId: "",
IsIntermodal: "2",
IsReturnIntermodal: "2",
Unit_Price: "0",
TC_Price: "0",
ManNum: "0",
ChirdNum: "0",
ChirdNoNeedBedNum: "0",
ChirdNeedBedNum: "0",
BabyNum: "0",
OldPeopleNum: "0",
SingleRoomNum: "0",
PreferPrice: 0,
YSeatNum: "0",
ESeatNum: "0",
FSeatNum: "0",
Commission: "0",
ClientSource: "",
BrandId: "",
TradeWay: "2",
PlatformAccount: "",
PlatformOrder: "",
GuestNum: 0,
IsChildrenTour: "0",
IsBirdDiscount: "0",
PredictRoomNum: "0",
BigRoomNum: "0",
TripleRoomNum: "0",
TradeDate: "",
CostType: "",
Remarks: "",
VisaNum: "0",
SafeNum: "0",
AirticketNum: "0",
ScenicRefundArr: [],
GoCityTime: "",
BackCityTime: "",
CommissionSharePeople: "-1",
CommissionShareMoney: "0",
OrderForm: "1",
SonControlID: "-1",
IsShowMessagesMoney: "2",
QuotationUrl: "", //单团附件
LureEmpId: 0, //引流id
CRMGuestId: 0, //客人ID
},
uploadLloading: false,
employeeMsg: {
BranchId: "-1",
IsLeave: 0,
},
rules: {
CustomerType: [{
required: true,
message: "请选择客户类型",
trigger: "change",
}, ],
CustomerId: [{
required: false,
message: "请选择客户门店",
trigger: "change",
}, ],
DepartureCityId: [{
required: true,
message: "请选择出发城市",
trigger: "change",
}, ],
GroupType: [{
required: true,
message: "请选择参团类型",
trigger: "change",
}, ],
ClientSource: [{
required: true,
message: "请选择客人来源",
trigger: "change",
}, ],
TradeWay: [{
required: true,
message: "请选择交易方式",
trigger: "change",
}, ],
ContactName: [{
required: true,
message: "请输入联系人姓名",
trigger: "blur",
}, ],
ContactMobile: [{
required: true,
message: "请输入联系人电话",
trigger: "blur",
},
{
pattern: /^(0|86|17951)?(13[0-9]|15[012356789]|17[012356789]|18[0-9]|19[0-9]|14[57])[0-9]{8}$/,
message: "请输入正确的手机",
},
],
},
msg: {
pageIndex: 1,
pageSize: 10,
LineId: "-1",
LineTeamId: "-1",
AimPlaceId: "-1",
TCID: "",
StartTime: "",
EndTime: "",
BranchId: "-1",
CityId: "-1",
DaysTrip: "",
SalePlat: [],
minGroupSize: "",
maxGroupSize: "",
minApplySize: "",
maxApplySize: "",
FlightID: "-1",
TCIDList: "",
WarningQuery: "-1",
RateOnDay: "-1",
RateOn: "-1",
Title: "", //团名
},
defaultImg: 'this.src="' + require("../../assets/img/bg_z1@2x.png") + '"',
list: [],
LineList: [],
LineTeamList: [],
AimPlaceList: [],
airlineList: [],
companyList: [],
salePlace: [],
startCityList: [],
startCityList1: [],
tripDetails: [],
ssptList: [],
remarkMsg: {
zc: "",
bzc: "",
fjf: "",
ye: "",
lr: "",
dd: "",
df: "",
dc: "",
srf: "",
qz: "",
qzf: "",
},
otherRemark: "",
ScenicRefundList: [],
PlatformAccountList: [],
ScenicRefundMoney: 0,
TCIDList: null,
tripObj: {
tcid: 0,
configId: 0,
cityId: 0,
orderId: 0,
},
SingleDMCPricex: 0, // 单地接;
SingleDMCPrice: 0, // 单地接;
showHotelObj: {
showPrice: false,
showPay: false,
showZhan: false,
},
PlatformAccountList1: [],
PlatformAccountList2: [],
qjGroupId: -1,
S_Travel_Share: false, //分享权限
userInfo: {},
TotalNumber: 0,
crmOrderObj: null,
isShowTeamOrder: false, //是否显示订单弹窗
teamInfo: {}, //团队信息
};
},
components: {
productOrderList,
orderForm,
commonTeamInfo: commonTeamInfo,
tripDownLoadCommon: tripDownLoadCommon,
carousel: carousel,
commonHotelInfo: commonHotelInfo,
},
filters: {
priceFormat(value) {
if (value == null) {
return 0.0;
}
let nStr = value.toFixed(2);
nStr += "";
let x = nStr.split(".");
let x1 = x[0];
let x2 = x.length > 1 ? "." + x[1] : "";
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, "$1" + "," + "$2");
}
return x1 + x2;
},
priceFormat2(value) {
if (value == null) {
return "已包含";
}
let nStr = value.toFixed(2);
nStr += "";
let x = nStr.split(".");
let x1 = x[0];
let x2 = x.length > 1 ? "." + x[1] : "";
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, "$1" + "," + "$2");
}
let result = x1 + x2;
if (result === "0.00") {
result = "已包含";
}
return result;
},
},
methods: {
//刷新页面
reSearchPage() {
this.isShowTeamOrder = false;
this.teamInfo = {};
this.getList();
},
//关闭窗口
closeForm() {
this.isShowTeamOrder = false;
this.teamInfo = {};
},
// 分享权限
GetSupperOrderEditAuth() {
var actionCode = this.$AuthCode.S_Travel_Share;
this.CheckUserAuth(actionCode, (res) => {
if (res.data.resultCode == 1 && res.data.data == 1) {
this.S_Travel_Share = true;
}
});
},
downloadFile(item) {
let reg = /^http(s)?:\/\/(.*?)\//;
this.downloadFileRename(item.FullUrl.replace(reg, ""), item.Name);
},
// 结束日期不能大于开始日期
dataDui() {
if (this.msg.StartTime > this.msg.EndTime && this.msg.EndTime !== "") {
this.$message.error("结束日期不能大于开始日期");
this.msg.EndTime = "";
}
},
// 获取微信二维码
getWxCode(key) {
this.wxLoading = false;
if (this.list[key].wxImage === "") {
this.wxLoading = true;
this.apipost(
"TaskManagemnet_get_GetWeiXinShare", {
ConfigId: this.list[key].ConfigID,
TCID: this.list[key].TCID,
},
(res) => {
if (res.data.resultCode == 1) {
let url = res.data.data;
this.list[key].wxImage = url;
this.wxLoading = false;
} else {
this.$message.error("二维码获取失败");
}
},
(err) => {}
);
}
},
toTrip(obj) {
this.tripObj.tcid = obj.TCID;
this.tripObj.configId = obj.ConfigID;
this.tripObj.cityId = obj.StartCityID;
this.tripObj.orderId = 0;
this.travelControlTripLayerShow = true;
},
hideTripDown() {
this.travelControlTripLayerShow = false;
},
goUrl(path, id, tcmun) {
this.$router.push({
name: path,
query: {
id: id,
tcmun: tcmun,
blank: "y",
tab: "团报名清单",
},
});
},
goUrlX(item) {
this.$router.push({
name: "GroupAdvertising",
query: {
LineID: item.LineID,
TCID: item.TCID,
blank: "y",
tab: "团期广告",
},
});
},
//获取航班详情
getDetails(index) {
this.tripDetails = this.list[index].flightList;
},
goBuy(obj) {
this.teamInfo = obj;
this.isShowTeamOrder = true;
return
this.addObj = obj;
this.addMsg.DepartureCityId = obj.StartCityID;
this.addMsg.ReturnArriveCityId = obj.ReturnArriveCityId;
this.addMsg.GoCityTime = this.starTime = obj.StartCityTime;
this.addMsg.BackCityTime = this.endTime = obj.BackCityTime;
this.addMsg.SonControlID = obj.SonControlID;
this.SingleDMCPrice = obj.SingleDMCPrice;
this.SingleDMCPricex = obj.SingleDMCPrice;
},
getJourney(id, TCID, title) {
var that = this;
this.tripTitle = title;
this.$nextTick(() => {
that.$refs.comTeam.GetTrip(id, TCID);
});
that.outerVisible = true;
},
getList() {
this.loading = true;
this.apipost(
"TaskManagemnet_get_GetSellProductCenter",
this.msg,
(res) => {
if (res.data.resultCode == 1) {
this.loading = false;
this.total = res.data.data.count;
for (let i = 0; i < res.data.data.pageData.length; i++) {
res.data.data.pageData[i]["wxImage"] = "";
}
this.list = res.data.data.pageData;
} else {
this.Error(res.data.message);
}
},
(err) => {}
);
},
// 线路
getLineList() {
this.apipost("line_post_GetAllList_V2", {
LineDirection: 0
}, (res) => {
if (res.data.resultCode == 1) {
this.LineList = res.data.data;
}
});
},
//获取系列列表
getLineTeamList(lineId) {
this.LineTeamList = [];
this.apipost(
"team_post_GetList", {
lineID: lineId,
isTOOP: 1,
},
(res) => {
if (res.data.resultCode == 1) {
this.msg.LineTeamId = "-1";
this.LineTeamList = res.data.data;
}
}
);
},
//获取目的地列表
getAimPlaceList(lineId, lineTeamId) {
let myLineId = lineId === "" ? this.msg.LineId : lineId;
let myLineTeamId = lineTeamId === "" ? this.msg.LineTeamId : lineTeamId;
this.AimPlaceList = [];
this.apipost(
"team_post_GetListForCascading", {
LineID: myLineId,
LtID: myLineTeamId,
},
(res) => {
if (res.data.resultCode == 1) {
this.msg.AimPlaceId = "-1";
this.AimPlaceList = res.data.data;
}
}
);
},
// 出发城市、目的地
getStartList() {
this.apipost("sellorder_get_GetAllStartCity", {}, (res) => {
if (res.data.resultCode == 1) {
this.startCityList = res.data.data;
} else {}
});
},
getStartList1() {
this.apipost(
"city_post_GetList", {
isDefault: -1,
priceType: -1,
},
(res) => {
if (res.data.resultCode == 1) {
this.startCityList1 = res.data.data;
} else {}
}
);
},
// 公司
getCompanyList() {
let RB_Group_id = this.CurrentUserInfo.RB_Group_id;
let msg = {
Status: 0,
is_show: 0,
RB_Group_Id: RB_Group_id,
};
this.apipost(
"admin_get_BranchGetList",
msg,
(res) => {
if (res.data.resultCode == 1) {
this.companyList = [{
Id: "-1",
BName: "不限",
}, ];
res.data.data.forEach((x) => {
var obj = {
Id: "",
BName: "",
};
obj.Id = x.Id.toString();
obj.BName = x.BName;
this.companyList.push(obj);
});
}
},
(err) => {}
);
},
getAirlineList() {
//获取航空公司*
let msg = {};
this.apipost(
"airline_post_GetList",
msg,
(res) => {
this.airlineList = res.data.data;
},
(err) => {}
);
},
getSalePlace() {
this.apipost(
"travel_get_GetTravelSelectEnum", {},
(res) => {
if (res.data.resultCode == 1) {
this.salePlace = res.data.data.SalePlat;
}
},
(err) => {}
);
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
resetPageIndex() {
this.msg.pageIndex = 1;
this.currentPage = 1;
},
clickHotel(TCID, LineId, LineteamId) {
var msg = {
TCID: TCID,
LineId: LineId,
LineteamId: LineteamId,
};
this.apipost(
"b2b_post_SetHotelClickService",
msg,
(res) => {
if (res.data.resultCode == 1) {}
},
(err) => {}
);
},
//直客版行程
goB2B(item) {
var B2BDomain = this.CurrentUserInfo.B2BDomain;
this.$tripUtils.GotoB2CPage(B2BDomain, item.ConfigID, item.TCID);
},
},
mounted() {
// crm自动登陆传过来的参数
if (this.$route.query.crmOrderObj) {
this.crmOrderObj = JSON.parse(this.$route.query.crmOrderObj)
this.addMsg.LureEmpId = this.crmOrderObj.LureEmpId //引流id
this.addMsg.CRMGuestId = this.crmOrderObj.CRMGuestId //客人ID
}
let userInfo = this.getLocalStorage();
this.userInfo = this.getLocalStorage();
this.GetSupperOrderEditAuth();//分享权限
this.qjGroupId = this.QjGroupId();
this.CurrentUserInfo = userInfo;
this.userId = userInfo.EmployeeId;
this.msg.BranchId = userInfo.RB_Branch_id.toString();
if (this.$route.query.id) {
this.msg.BranchId = "-1";
this.msg.TCID = this.$route.query.id;
}
if (this.$route.query.TCIDList) {
this.msg.TCIDList = this.TCIDList = this.$route.query.TCIDList;
}
if (this.msg.StartTime === "") {
let nowDay = this.FormartDate(new Date());
this.msg.StartTime = nowDay;
}
this.getCompanyList();//公司
this.getList();//产品列表
this.getLineList();//线路
this.getSalePlace();//销售平台
this.getAirlineList();//获取航空公司
this.getStartList();//出发城市
this.getStartList1();//目的地
},
};
</script>
...@@ -933,7 +933,13 @@ ...@@ -933,7 +933,13 @@
layout="total,prev, pager, next, jumper" :page-size="msg.pageSize" :total="total"> layout="total,prev, pager, next, jumper" :page-size="msg.pageSize" :total="total">
</el-pagination> </el-pagination>
<div class="buy-box" v-show="isShowTeamOrder"> <div class="buy-box" v-show="isShowTeamOrder">
<orderForm @success="reSearchPage" @close="closeForm" :PTCID="teamInfo.TCID" :POrderId="0" :PBranchId="0" :PProductType="2" :showCity="false"> <orderForm @success="reSearchPage" @close="closeForm"
:PTCID="teamInfo.TCID"
:POrderId="0"
:PBranchId="0"
:PProductType="2"
:showCity="false"
:productObj="teamInfo">
</orderForm> </orderForm>
</div> </div>
</div> </div>
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<!-- 客户类型 --> <!-- 客户类型 -->
<el-form-item :label="$t('fnc.khleixing')" prop="CustomerType"> <el-form-item :label="$t('fnc.khleixing')" prop="CustomerType">
<el-select v-model="addMsg.CustomerType" filterable :placeholder="$t('pub.pleaseSel')" @change=" <el-select v-model="addMsg.CustomerType" filterable :placeholder="$t('pub.pleaseSel')" @change="
resetMsg(addMsg.CustomerType), getTypePrice(); resetMsg(addMsg.CustomerType); getTypePrice();
resetSelect(); resetSelect();
getClientSource(); getClientSource();
getCustomer(); getCustomer();
...@@ -81,8 +81,8 @@ ...@@ -81,8 +81,8 @@
"> ">
<el-select v-model="addMsg.CustomerId" filterable :placeholder="$t('pub.pleaseSel')" <el-select v-model="addMsg.CustomerId" filterable :placeholder="$t('pub.pleaseSel')"
@change="changeCustomer"> @change="changeCustomer">
<el-option v-for="item in customerList" :label="item.customerName + '-' + item.contact" <el-option v-for="(item,index) in customerList" :label="item.customerName + '-' + item.contact"
:value="item.customerId" :key="item.customerId"> :value="item.customerId" :key="index">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -375,7 +375,7 @@ ...@@ -375,7 +375,7 @@
<el-form-item :label="$t('salesModule.ScenicRefund')"> <el-form-item :label="$t('salesModule.ScenicRefund')">
<el-select filterable multiple class="multiple_input" v-model="addMsg.ScenicRefundArr" <el-select filterable multiple class="multiple_input" v-model="addMsg.ScenicRefundArr"
:placeholder="$t('pub.pleaseSel')" @change="ScenicRefundMethods"> :placeholder="$t('pub.pleaseSel')" @change="ScenicRefundMethods">
<el-option v-for="item in ScenicRefundList" :label="item.ScenicName" :value="item.Id" :key="item.Id"> <el-option v-for="(item,index) in ScenicRefundList" :label="item.ScenicName" :value="item.Id" :key="index">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -395,7 +395,7 @@ ...@@ -395,7 +395,7 @@
<el-form-item :label="$t('salesModule.CustomFrom')" prop="ClientSource"> <el-form-item :label="$t('salesModule.CustomFrom')" prop="ClientSource">
<el-select v-model="addMsg.ClientSource" filterable :placeholder="$t('pub.pleaseSel')" <el-select v-model="addMsg.ClientSource" filterable :placeholder="$t('pub.pleaseSel')"
@change='changeClientSource'> @change='changeClientSource'>
<el-option v-for="item in clientSourceList" :label="item.Name" :value="item.Id" :key="item.Id"> <el-option v-for="(item,index) in clientSourceList" :label="item.Name" :value="item.Id" :key="index">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -482,6 +482,10 @@ ...@@ -482,6 +482,10 @@
PProductType: { PProductType: {
type: Number, type: Number,
default: 0, //产品类型(1-常规团,2-包机团) default: 0, //产品类型(1-常规团,2-包机团)
},
productObj:{
type: Object,
default: {},
} }
}, },
data() { data() {
...@@ -1044,7 +1048,7 @@ ...@@ -1044,7 +1048,7 @@
}, },
(res) => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.minPrice = res.data.data.LowDeposit; this.minPrice = res.data.data&&res.data.data.LowDeposit;
} }
}, },
); );
...@@ -1484,8 +1488,13 @@ ...@@ -1484,8 +1488,13 @@
Number(this.addMsg.AirticketNum); Number(this.addMsg.AirticketNum);
this.addMsg.IsChildrenTour = this.priceObj.IsSupportChildren; this.addMsg.IsChildrenTour = this.priceObj.IsSupportChildren;
this.addMsg.IsBirdDiscount = this.priceObj.IsBirdDiscount; this.addMsg.IsBirdDiscount = this.priceObj.IsBirdDiscount;
this.apipost( let url
"sellorder_post_SetTravelTeamOrderForB2B", if(this.PProductType==1){
url = 'sellorder_post_SetOrderInfo_02'
}else if(this.PProductType==2){
url = 'sellorder_post_SetTravelTeamOrderForB2B' //团下单接口sellorder_post_SetOrderInfoForB2B
}
this.apipost(url,
this.addMsg, this.addMsg,
(res) => { (res) => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
...@@ -1752,6 +1761,13 @@ ...@@ -1752,6 +1761,13 @@
this.CurrentUserInfo = this.getLocalStorage(); this.CurrentUserInfo = this.getLocalStorage();
//获取客户类型 //获取客户类型
this.getCustomerType(); this.getCustomerType();
// 当前线路报价
this.getMinPrice(this.productObj.LineID)
// 可退景点
this.getScenicRefund(this.PTCID);
//获取所有账户列表
this.getPlatformAccount(this.productObj.PlatformAccountTypeId)
this.getPlatformAccountNew()
//参团类型 //参团类型
this.getJoinType(); this.getJoinType();
//获取员工列表 //获取员工列表
...@@ -1760,8 +1776,15 @@ ...@@ -1760,8 +1776,15 @@
this.getCityList(); this.getCityList();
//获取交易方式 //获取交易方式
this.getTradeWay(); this.getTradeWay();
}, },
watch: { watch: {
productObj:{
handler(oldValue, newVal){
this.addMsg.DepartureCityId = oldValue.StartCityID
this.addMsg.ReturnArriveCityId = oldValue.ReturnArriveCityId
}
},
//监听TCID变化 //监听TCID变化
PTCID: function (oldValue, newVal) { PTCID: function (oldValue, newVal) {
if (oldValue != newVal) { if (oldValue != newVal) {
......
<style>
@import "../../assets/css/newTravelManager.css";
.productQuerySearch {
width: 100%;
min-height: auto;
overflow: hidden;
padding: 0 0 20px 0;
}
.productQuerySearch li {
float: left;
font-size: 12px;
color: #666;
margin: 20px 0 0px 0;
}
.productQuerySearch li>span {
display: inline-block;
}
.productQuerySearch li span>em {
display: inline-block;
min-width: 60px;
text-align: right;
font-style: normal;
margin: 0 12px 0 0;
}
.productQuerySearch li:last-child {
position: fixed;
z-index: 50;
top: 36px;
right: 20px;
}
.productQuerySearch ul {
position: relative;
overflow: hidden;
}
.productQueryList {
width: 100%;
min-width: 1366px;
padding-left: 10px;
}
.productQueryList li {
width: 100%;
border: 1px solid #e5e5e5;
background: #fff;
margin-bottom: 10px;
color: #333;
font-size: 14px;
}
.productQueryList li::after {
content: "";
display: block;
clear: both;
}
.productQueryList li i.iconfont {
color: #bbb;
margin-right: 8px;
}
.productQueryList li>div:first-child {
display: table;
width: 100%;
}
.productQueryList li>div>div {
display: table-cell;
border-right: 1px dashed #dcdfe6;
}
.productQueryList li>div>div:last-child {
border-right: none;
}
.productQueryList li .d11 {
float: left;
width: 160px;
height: 120px;
margin: 14px 14px 0 14px;
}
.productQueryList li .d11>li {
width: 160px;
height: 120px;
border: none;
}
.productQueryList li .d11>li>img {
width: 160px;
height: 120px;
}
.productQueryList li .d12 {
float: left;
padding-top: 18px;
width: 200px;
}
.productQueryList li .d12 .d12p {
margin-top: 3px;
font-size: 12px;
color: #999;
cursor: pointer;
max-height: 40px;
line-height: 20px;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.productQueryList li .d12 .d12p:hover {
text-decoration: underline;
color: #333;
}
.productQueryList li .d12 .d12TC {
margin: 5px 0;
color: #666666;
font-size: 12px;
}
.productQueryList li .d1 {
width: 18%;
position: relative;
padding: 0 20px;
}
.productQueryList li .d2 {
width: 14%;
text-align: center;
padding-top: 20px;
}
.productQueryList li .d2 p.flightNo {
background: #ccc;
width: 136px;
margin: 5px 0;
padding: 0 10px;
height: 22px;
line-height: 22px;
display: inline-block;
font-size: 14px;
}
.productQueryList li .d2 p.flightNo em {
font-style: normal;
color: #333;
font-size: 12px;
font-weight: bold;
}
.productQueryList li .d2 p.flightNo .flem {
height: 22px;
width: 50px;
display: inline-block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.productQueryList li .d2 p>span {
color: #fff;
font-size: 12px;
border-radius: 10px;
background: #2aaef2;
padding: 2px 5px;
cursor: pointer;
}
.productQueryList li .d2>div>div {
display: inline-block;
line-height: 24px;
font-size: 12px;
}
.productQueryList li .d3 {
width: 17%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d3 p {
line-height: 24px;
}
.productQueryList li .d3 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d3 p>em {
background: #ff9c00;
font-style: normal;
margin-left: 8px;
color: #fff;
border-radius: 4px;
padding: 2px 5px;
}
.productQueryList li .d4 {
width: 10%;
padding-left: 20px;
padding-top: 20px;
}
.productQueryList li .d4 p span.price {
color: #333;
text-decoration: underline;
font-size: 12px;
}
.productQueryList li .d4 p span.price:hover {
color: #e95252;
font-weight: bold;
cursor: pointer;
}
.productQueryList li .d5 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d5 p {
line-height: 26px;
}
.productQueryList li .d5 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d5 p>i {
font-weight: bold;
font-style: normal;
}
.productQueryList li .d8 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d8 p {
line-height: 26px;
}
.productQueryList li .d8 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d8 p>i {
font-style: normal;
}
.productQueryList li .d6 {
padding: 20px 40px;
width: 100%;
height: inherit;
border-top: 1px solid #e5e5e5;
}
.productQueryList li .d6 p {
display: table-cell;
color: #e95252;
}
.productQueryList li .d6 p:nth-child(1) {
width: 60px;
font-size: 12px;
}
.productQueryList li .d7 {
width: 10%;
text-align: center;
padding: 40px 0 0 40px;
border-right: none;
}
.productQueryList li .d7 button {
width: 30px;
height: 30px;
border-radius: 4px;
}
.productQueryList li .d7 .el-button--primary {
padding: 5px;
margin: 0;
font-size: 14px !important;
color: #fff;
}
.productQueryList li .d7 i.iconfont {
color: #fff;
margin: 0;
}
.elPopoverLayer {
padding: 0px 10px;
}
.elPopoverLayer p {
line-height: 34px;
font-size: 12px;
}
.elPopoverLayer p>i {
font-style: normal;
border: 1px solid #999;
padding: 0 3px;
font-size: 12px;
margin-right: 10px;
font-weight: bold;
color: #333;
}
.elPopoverLayer p>span {
display: inline-block;
width: 130px;
}
.elPopoverLayer p>span>b {
margin-left: 10px;
color: #2aaef2;
}
.superSearchLayer>p {
padding: 20px 0;
font-size: 14px;
color: #333;
font-weight: bold;
}
.superSearchLayer>div {
margin-top: 20px;
color: #666;
font-size: 12px;
}
.superSearchLayer>div>span {
margin: 0 15px 0 5px;
}
.pro_tripDetails {
padding: 0;
box-shadow: 0px 1px 3px 0px #dedede;
max-height: 400px;
overflow-y: auto;
}
.pro_tripDetails .popper__arrow::after {
border-bottom-color: #ededed !important;
}
.pro_tripDetails table {
padding: 10px 0 0 20px;
background-color: #ededed;
border-collapse: collapse;
border: 1px solid #d2d2d2;
font-size: 12px;
}
.pro_tripDetails table th {
background-color: #ededed;
padding: 5px;
}
.pro_tripDetails table td {
background-color: #ffffff;
padding: 9px 15px;
color: #333333;
border: 1px solid #d2d2d2;
}
.pro_tripDetails table td._d_name {
background-color: #ededed;
}
.pro_tripDetails table ._color_666 {
color: #666666;
}
.pro_tripDetails table tr._color_666 th {
padding: 9px 15px;
}
.productQuerybottomLayer {
overflow: auto;
position: fixed;
height: 600px;
z-index: 50;
bottom: 0;
left: 0;
border-top: 3px solid #38425d;
background-color: #ffffff;
padding: 10px 10px 0;
width: 100%;
}
.productQuerybottomLayer .el-form-item__label {
font-size: 12px !important;
}
.productQuerybottomLayer>p {
border-left: 3px solid #e95252;
text-indent: 15px;
height: 16px;
font-family: "PingFangSc-Fine";
font-size: 16px;
margin-bottom: 20px;
line-height: 14px;
color: #000;
}
.productQuerybottomLayer .el-input {
width: auto !important;
}
.productQueryList .disabledBtn {
background: #999 !important;
border-color: #999 !important;
}
.product_union {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union::after {
content: "联";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_union1 {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union1::after {
content: "内";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_warning {
position: absolute;
top: 0px;
right: 0px;
width: 0px;
height: 0px;
border-top: 10px solid red;
border-bottom: 10px solid transparent;
border-left: 10px solid transparent;
border-right: 10px solid red;
}
.product_warning::after {
content: "!";
position: absolute;
top: -12px;
right: -5px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.PQ_detail {
width: 100%;
border-collapse: collapse;
}
.PQ_detail tr th,
.v-table-title-cell {
background: #e6e6e6;
height: 40px;
font-size: 14px;
border-right: 1px solid #e6e6e6;
color: #333;
}
.PQ_detail tr {
background: #fff;
text-align: center;
height: 40px;
}
.PQ_detail tr td {
font-size: 12px;
border: 1px solid #e5e5e5;
}
.PQ_HotelPop {
overflow: auto;
max-height: 350px;
}
.PQ_HotelPop table td {
padding: 5px 0;
text-align: center;
}
.PQ_HotelPop table th {
text-align: center;
}
.productQuerybottomLayer .el-upload-list {
width: 200px;
}
</style>
<template>
<div class="productQueryList" v-loading="loading">
<ul v-if="list.length != 0">
<li v-for="(item, index) in list" :key="index">
<div class="dline">
<div class="d1">
<div v-if="item.IsB2B === 0" class="product_union1"></div>
<div v-if="item.IsUnionTravel === 1" class="product_union"></div>
<div v-if="item.IsWarning === 1" class="product_warning"></div>
<div class="d12" style="float: none; margin: auto">
<p><i class="iconfont icon-biaoti1"></i> {{ item.LineName }}</p>
<p class="d12TC">{{ item.TCNUM }}{{ item.TCID }}</p>
<p>{{ item.LtName }}</p>
<el-tooltip class="item" effect="dark" :content="item.Title" placement="top-start"
popper-class="max-w250">
<p class="d12p" @click="getJourney(item.ConfigID, item.TCID, item.LineName)" :title="item.Title">
{{ item.Title }}
</p>
</el-tooltip>
<p v-if="item.CustomerName&&item.CustomerName!=''" style="font-size: 11px;font-weight:bold;color:red">
<span v-if="item.CustomerName">客户名称:{{item.CustomerName}}
</span>
</p>
<p v-if="item.PriceOfferUrl&&item.PriceOfferUrl!=''">
<a style="color:blue;" :href="item.PriceOfferUrl" v-if="item.PriceOfferUrl" target="_blank">下载报价单</a>
</p>
</div>
</div>
<div class="d2">
<p style="text-align: left; text-indent: 50px">
<i class="iconfont icon-hangban1"></i>{{ $t("salesModule.GoFlight") }}
</p>
<p class="flightNo">
<em class="fl flem"
:title="item.flightList[0] && item.flightList[0].AlName">{{ item.flightList[0] && item.flightList[0].AlName }}</em>
<em class="fr">{{
item.flightList[0] && item.flightList[0].Flight_number
}}</em>
</p>
<div>
<div>
<p>
{{
item.flightList[0] && item.flightList[0].DepartureName
}}---------{{
item.flightList[0] && item.flightList[0].ArrivalCityName
}}
</p>
<p>
<span style="background-color: transparent; color: #000000">{{
item.flightList[0] && item.flightList[0].Departure_time
}}</span>
<el-popover width="900" trigger="click" popper-class="pro_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>
<th width="60">{{ $t("admin.admin_status") }}</th>
</tr>
<tr v-for="(ds, din) in tripDetails" :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 == tripDetails.length - 1">{{
$t("Airticket.Air_returnTrip")
}}</span>
<span v-else-if="
din > 0 && din != tripDetails.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>
<td>
<span v-if="ds.FlightState == 1" style="color: rgb(71, 191, 140) !important">OK</span>
<span v-else style="color: red !important">{{
$t("visa.v_zanding")
}}</span>
</td>
</tr>
</table>
<span slot="reference" @click="getDetails(index)">{{
$t("Airticket.Air_backAndforth")
}}</span>
</el-popover>
<span style="background-color: transparent; color: #000000">{{
item.flightList[0] && item.flightList[0].Arrival_time
}}</span>
</p>
</div>
<div>
<p>{{ item.ACityName }}</p>
<p>{{ item.Arrival_time }}</p>
</div>
</div>
</div>
<div class="d3">
<p>
<i class="iconfont icon-tuandui"></i>{{ $t("visa.v_teaminfo")
}}<em>{{ item.DayNum }}{{ $t("hotel.hotel_day") }}{{ item.NightNum
}}{{ $t("Operation.Op_night") }}</em>
</p>
<p>
<span>{{ $t("Airticket.Air_StartTime") }}</span>{{ item.StartDate }}
</p>
<p>
<span>{{ $t("system.table_goCity") }}</span>{{ item.StartCityName }}
</p>
<p>
<span>{{ $t("salesModule.BackCity") }}</span>{{ item.ReturnArriveCityName }}
</p>
<p>
<span>{{ $t("scen.sc_cp") }}</span>{{ item.OutBranchName }}
<span class="TC_neibu" style="float: inherit;color: #ffffff;margin-left: 5px;"
v-if="item.StandardCurrencyName" :class="{'TCneibu':item.StandardCurrencyName=='人民币','TCb2b':item.StandardCurrencyName=='日元',
'TCb2c':item.StandardCurrencyName=='新台币','AppPlat':item.StandardCurrencyName=='',
'otherPlat':item.StandardCurrencyName=='',}">{{item.StandardCurrencyName}}结算</span>
</p>
<p v-show="item.ClearOrderHour > 0">
<span>{{ $t("salesModule.THQW") }}</span>
<span class="TCL-greenType">{{ item.ClearOrderHour }}{{ $t("salesModule.Hour") }}</span>
</p>
<p v-show="item.SaleClearOrderHour && item.SaleClearOrderHour > 0">
<span>{{ $t("salesModule.XSQW") }}</span>
<span class="TCL-greenType">{{ item.SaleClearOrderHour
}}{{ $t("salesModule.Hour") }}</span>
</p>
<p v-if="
item.LineID == 14 &&
item.HotelOrderListReports &&
item.HotelOrderListReports.length > 0
">
<el-popover width="600" trigger="click" popper-class="PQ_HotelPop">
<commonHotelInfo :HotelObj="item.HotelOrderListReports" :showHotelObj="showHotelObj">
</commonHotelInfo>
<span slot="reference" class="price" style="cursor: pointer; text-decoration: underline"
@click="clickHotel(item.TCID, item.LineID, item.ltID)">{{ $t("salesModule.HotelOrder") }}</span>
</el-popover>
</p>
</div>
<div class="d4">
<p>
<i class="iconfont icon-jiage"></i>{{ $t("Operation.Op_PriceInfo") }}
</p>
<p style="
color: #47bf8c;
font-size: 16px;
font-weight: bold;
margin: 5px 0;
">
{{ $t("Operation.Op_tradePrice") }}:¥{{
item.B2BMemberPrice | priceFormat(item.B2BMemberPrice)
}}<br />
{{ $t("Operation.Op_directPrice") }}:¥{{
item.B2CMemberPrice | priceFormat(item.B2CMemberPrice)
}}
</p>
<p>
<el-popover width="630" trigger="click">
<table class="PQ_detail">
<tr>
<td colspan="6" style="text-align: left; padding-left: 10px">
{{ $t("salesModule.BasePrice") }}
</td>
</tr>
<tr>
<th>{{ $t("advmanager.v_type") }}</th>
<th>{{ $t("salesModule.HYTHJ") }}</th>
<th>{{ $t("salesModule.PTTHJ") }}</th>
<th>{{ $t("salesModule.ZKHYJ") }}</th>
<th colspan="2">{{ $t("salesModule.PTZKJ") }}</th>
</tr>
<tr>
<td>{{ $t("salesModule.Adult") }}</td>
<td>
{{
item.B2BMemberPrice | priceFormat(item.B2BMemberPrice)
}}
</td>
<td>{{ item.B2BPrice | priceFormat(item.B2BPrice) }}</td>
<td>
{{
item.B2CMemberPrice | priceFormat(item.B2CMemberPrice)
}}
</td>
<td colspan="2">{{ item.B2CPrice | priceFormat(item.B2CPrice) }}</td>
</tr>
<tr>
<td>{{ $t("salesModule.ChildBed") }}</td>
<td>
{{
(item.B2BMemberPrice + item.ChildNeedPrice)
| priceFormat(
item.B2BMemberPrice + item.ChildNeedPrice
)
}}
</td>
<td>
{{
(item.B2BPrice + item.ChildNeedPrice)
| priceFormat(item.B2BPrice + item.ChildNeedPrice)
}}
</td>
<td>
{{
(item.B2CMemberPrice + item.ChildNeedPrice)
| priceFormat(
item.B2CMemberPrice + item.ChildNeedPrice
)
}}
</td>
<td colspan="2">
{{
(item.B2CPrice + item.ChildNeedPrice)
| priceFormat(item.B2CPrice + item.ChildNeedPrice)
}}
</td>
</tr>
<tr>
<td>{{ $t("salesModule.ChildNoBed") }}</td>
<td>
{{
(item.B2BMemberPrice - item.ChildNoNeedPrice)
| priceFormat(
item.B2BMemberPrice - item.ChildNoNeedPrice
)
}}
</td>
<td>
{{
(item.B2BPrice - item.ChildNoNeedPrice)
| priceFormat(item.B2BPrice - item.ChildNoNeedPrice)
}}
</td>
<td>
{{
(item.B2CMemberPrice - item.ChildNoNeedPrice)
| priceFormat(
item.B2CMemberPrice - item.ChildNoNeedPrice
)
}}
</td>
<td colspan="2">
{{
(item.B2CPrice - item.ChildNoNeedPrice)
| priceFormat(item.B2CPrice - item.ChildNoNeedPrice)
}}
</td>
</tr>
<tr>
<td>{{ $t("salesModule.SingleJ") }}</td>
<td colspan="5">
{{
item.SingleDMCPrice | priceFormat(item.SingleDMCPrice)
}}
</td>
</tr>
<tr>
<td>{{ $t("Operation.Op_baby") }}</td>
<td colspan="5">
{{ item.BabyPrice | priceFormat(item.BabyPrice) }}
</td>
</tr>
<tr>
<td colspan="6" style="text-align: left; padding-left: 10px">
{{ $t("salesModule.OtherPrice") }}
</td>
</tr>
<tr>
<th>{{ $t("Operation.Op_oldmanSurcharge") }}</th>
<th>{{ $t("Operation.Op_childSurcharge") }}</th>
<th>{{ $t("salesModule.VisaBack") }}</th>
<th>{{ $t("Operation.Op_singleRoomcha") }}</th>
<th>{{ $t("Operation.Op_zafei") }}</th>
<th>小费</th>
</tr>
<tr>
<td>
{{
item.OldManChargePrice
| priceFormat(item.OldManChargePrice)
}}
</td>
<td>
{{
item.BabyChargePrice
| priceFormat(item.BabyChargePrice)
}}
</td>
<td>
{{ item.VisaPrice | priceFormat2(item.VisaPrice) }}(-{{
item.BackVisaPrice | priceFormat(item.BackVisaPrice)
}}
</td>
<td>
{{
item.SingleRoomPrice
| priceFormat(item.SingleRoomPrice)
}}
</td>
<td>
{{ item.OtherPrice | priceFormat(item.OtherPrice) }}
</td>
<td>{{ item.TipAmount | priceFormat(item.TipAmount) }}</td>
</tr>
</table>
<span slot="reference" class="price">{{
$t("Operation.Op_priceDetail")
}}</span>
</el-popover>
</p>
</div>
<div class="d5">
<p>
<i class="iconfont icon-tuanwei"></i>{{ $t("visa.v_tuanweiinfo") }}
</p>
<p>
<span>{{ $t("visa.v_currentseat") }}</span><i :style="item.SurplusSeat < 0 ? 'color: red' : ''">{{
item.SurplusSeat
}}</i>
</p>
<p>
<span>{{ $t("visa.v_yibaoru") }}</span><i>{{ item.Seat == "" ? "0" : item.Seat
}}{{ $t("salesModule.PeoPle") }}</i>({{ $t("Operation.Op_takeSeat") }}{{ item.Occupied
}}{{ $t("salesModule.PeoPle") }})
</p>
<p>
<span>{{ $t("visa.v_houbu") }}</span>
<em v-if="item.IsSubstitution == 1">{{ $t("salesModule.KYHB") }}{{ $t("visa.v_houbu")
}}{{ item.SubstitutionCount
}}{{ $t("salesModule.PeoPle") }}</em>
<em v-if="item.IsSubstitution != 1" style="color: #e95252">{{
$t("salesModule.RefuseHB")
}}</em>
</p>
<p>
<span>操作OP</span><i style="font-weight: normal">{{ item.OPName }}</i>
</p>
</div>
<div class="d8">
<p>
<i class="iconfont icon-hangban1"></i>{{ $t("Operation.Op_Warmprompt") }}
</p>
<p>
<span>{{ $t("visa.v_sqtime") }}</span><i>{{
item.SendVisaTime === "" ? "未设置" : item.SendVisaTime
}}</i>
</p>
<p>
<span>{{ $t("visa.v_cqtime") }}</span><i>{{
item.OutVisaTime === "" ? "未设置" : item.OutVisaTime
}}</i>
</p>
<p>
<span>{{ $t("visa.v_kptime") }}</span><i>{{
item.TicketDeadline === "" ? "未设置" : item.TicketDeadline
}}</i>
</p>
<p v-if="item.VisaFileList.length !== 0">
<span>{{ $t("visa.v_visaInformation") }}</span>
</p>
<p v-if="item.VisaFileList.length !== 0" v-for="(item2, index2) in item.VisaFileList" :key="index2">
<span style="cursor: pointer; text-decoration: underline"
@click="downloadFile(item2)">{{ item2.Name }}</span>
</p>
<p>
<span>{{ $t("salesModule.TicketStatus") }}</span>
<span class="fz16 fbold">
<el-tooltip class="item" effect="dark" :content="$t('salesModule.AllTk')" placement="top">
<span style="color: #4bca81" v-if="item.MakeInvoice == 1"></span>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="$t('salesModule.NotDeal')" placement="top">
<span style="color: #e95252" v-if="item.MakeInvoice == '-1'">x</span>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="$t('salesModule.YCZD')" placement="top">
<span style="color: #e95252" v-if="item.MakeInvoice == '0'">O</span>
</el-tooltip>
</span>
</p>
</div>
<div class="d7">
<el-button-group style="display: block">
<el-tooltip class="item" effect="dark" :content="$t('salesModule.LookBM')" placement="top-start">
<el-button @click="
goUrl('groupTourOrderByTuan', item.TCID, item.TCNUM)
" type="primary" style="background: #00c6ff; border-color: #00c6ff" icon="iconfont icon-sousuo">
</el-button>
</el-tooltip>
<!--关内团后不能在报名 hk 2022-07-13去掉 && item.IsB2B === 1 修改为可报名 -->
<el-tooltip class="item" effect="dark" :content="$t('salesModule.LJXD')" placement="top-start"
v-if="item.IsPayOrder !== 1 ">
<el-button type="primary" style="background: #f16c3c; border-color: #f16c3c" v-if="!TCIDList"
icon="iconfont icon-fukuan1" @click="goBuy(item)"></el-button>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="$t('Operation.Op_tripDownLoad')" placement="top-start">
<el-button @click="toTrip(item)" type="primary" style="background: #47bf8c; border-color: #47bf8c"
icon="iconfont icon-xiazai"></el-button>
</el-tooltip>
<el-tooltip v-if="
CurrentUserInfo.IsOpenB2C == 1 &&
CurrentUserInfo.B2BDomain != '' &&
item.LineID != 2 &&
item.LineID != 8
" class="item" effect="dark" content="直客版预览" placement="top-start">
<el-button @click.native="goB2B(item)" type="primary"
style="background: #f16c3c; border-color: #f16c3c" icon="iconfont icon-view"></el-button>
</el-tooltip>
</el-button-group>
<el-button-group v-show="qjGroupId == userInfo.RB_Group_id || S_Travel_Share" style="display: block">
<el-tooltip class="item" effect="dark" :content="$t('salesModule.ShareTrip')" placement="top-start"
style="float: left">
<el-popover width="180" trigger="click">
<div class="w150" v-loading="wxLoading">
<img style="
float: left;
width: 108px;
height: 108px;
margin: 10px 21px 3px;
" :src="
item.wxImage === ''
? ''
: 'data:image/png;base64,' + item.wxImage
" />
<p style="text-align: center; font-size: 12px; color: #666">
{{ $t("salesModule.XCX") }}
</p>
</div>
<el-button slot="reference" type="primary" style="
background: #b552e9;
border-color: #b552e9;
border-radius: 0;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
" icon="iconfont icon-fenxiang" @click="getWxCode(index)"></el-button>
</el-popover>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="$t('salesModule.ShareApp')" placement="top-start"
style="float: left">
<el-popover width="180" trigger="click">
<div class="w150">
<img style="
float: left;
width: 108px;
height: 108px;
margin: 10px 21px 3px;
" :src="'data:image/png;base64,' + item.AppImage" />
<p style="text-align: center; font-size: 12px; color: #666">
{{ $t("salesModule.Helper") }}
</p>
</div>
<el-button slot="reference" type="primary" style="
background: #e6a014;
border-color: #e6a014;
border-radius: 0;
" icon="iconfont icon-erweima"></el-button>
</el-popover>
</el-tooltip>
<el-tooltip class="item" effect="dark" :content="'广告数量' + item.AdvertCount" placement="top-start">
<el-button type="primary" style="background: #e95252; border-color: #e95252" v-if="!TCIDList"
icon="iconfont icon-guanggao" @click="goUrlX(item)"></el-button>
</el-tooltip>
</el-button-group>
</div>
</div>
<div class="d6">
<el-popover placement="right" width="500" trigger="click" :content="item.ProductRecommend">
<span style="
cursor: pointer;
padding: 2px 5px;
display: inline-block;
margin-bottom: 5px;
border-radius: 4px;
border: 1px solid #ccc;
font-size: 12px;
" slot="reference">{{ $t("Operation.Op_bentuanMaidian") }}</span>
</el-popover>
<p>{{ $t("Operation.Op_remark") }}:</p>
<p :title="item.OpRemark">{{ item.OpRemark }}</p>
</div>
</li>
</ul>
<div class="noData" v-else>
{{ $t("system.content_noData") }}
</div>
</div>
</template>
<script>
import commonTeamInfo from "../commonPage/commonTeamInfo.vue";
import tripDownLoadCommon from "../commonPage/TripDownLoadCommon.vue";
import carousel from "../commonPage/carousel.vue";
import commonHotelInfo from "../commonPage/commonHotelInfo.vue";
import orderForm from "./order-form.vue";
export default {
props:['loading','list'],
data() {
return {
pickerOptions0: {
disabledDate: (time) => {
let starTime = new Date(this.starTime);
return time.getTime() > starTime.getTime();
},
},
pickerOptions1: {
disabledDate: (time) => {
let endTime = new Date(this.endTime);
return time.getTime() < endTime.getTime() - 5.64e7;
},
},
//当前登录用户信息
CurrentUserInfo: {},
travelControlTripLayerShow: false,
wxLoading: false,
HightUnitPrice: "2",
userId: "",
customerId: "",
createByInfo: "",
starTime: "",
endTime: "",
stratPrice: "",
stratPriceShow: false,
returnPrice: "",
returnPriceShow: false,
minPrice: 0,
loading2: false,
outerVisible: false,
tripTitle: "",
currentPage: 1,
total: 0,
addObj: {},
Unit_PriceList: [], //成交单价下拉数据
LessMoney: 0,
addMsg: {
GroupTypeNeedHouse: "0",
OrderId: "0",
OneSex: "0",
TCID: "0",
CustomerType: "",
GroupType: "",
IndustryCategory: "",
ContactName: "",
ContactMobile: "",
CustomerId: "",
DepartureCityId: "",
ReturnArriveCityId: "",
IsIntermodal: "2",
IsReturnIntermodal: "2",
Unit_Price: "0",
TC_Price: "0",
ManNum: "0",
ChirdNum: "0",
ChirdNoNeedBedNum: "0",
ChirdNeedBedNum: "0",
BabyNum: "0",
OldPeopleNum: "0",
SingleRoomNum: "0",
PreferPrice: 0,
YSeatNum: "0",
ESeatNum: "0",
FSeatNum: "0",
Commission: "0",
ClientSource: "",
BrandId: "",
TradeWay: "2",
PlatformAccount: "",
PlatformOrder: "",
GuestNum: 0,
IsChildrenTour: "0",
IsBirdDiscount: "0",
PredictRoomNum: "0",
BigRoomNum: "0",
TripleRoomNum: "0",
TradeDate: "",
CostType: "",
Remarks: "",
VisaNum: "0",
SafeNum: "0",
AirticketNum: "0",
ScenicRefundArr: [],
GoCityTime: "",
BackCityTime: "",
CommissionSharePeople: "-1",
CommissionShareMoney: "0",
OrderForm: "1",
SonControlID: "-1",
IsShowMessagesMoney: "2",
QuotationUrl: "", //单团附件
LureEmpId: 0, //引流id
CRMGuestId: 0, //客人ID
},
uploadLloading: false,
employeeMsg: {
BranchId: "-1",
IsLeave: 0,
},
rules: {
CustomerType: [{
required: true,
message: "请选择客户类型",
trigger: "change",
}, ],
CustomerId: [{
required: false,
message: "请选择客户门店",
trigger: "change",
}, ],
DepartureCityId: [{
required: true,
message: "请选择出发城市",
trigger: "change",
}, ],
GroupType: [{
required: true,
message: "请选择参团类型",
trigger: "change",
}, ],
ClientSource: [{
required: true,
message: "请选择客人来源",
trigger: "change",
}, ],
TradeWay: [{
required: true,
message: "请选择交易方式",
trigger: "change",
}, ],
ContactName: [{
required: true,
message: "请输入联系人姓名",
trigger: "blur",
}, ],
ContactMobile: [{
required: true,
message: "请输入联系人电话",
trigger: "blur",
},
{
pattern: /^(0|86|17951)?(13[0-9]|15[012356789]|17[012356789]|18[0-9]|19[0-9]|14[57])[0-9]{8}$/,
message: "请输入正确的手机",
},
],
},
msg: {
pageIndex: 1,
pageSize: 10,
LineId: "-1",
LineTeamId: "-1",
AimPlaceId: "-1",
TCID: "",
StartTime: "",
EndTime: "",
BranchId: "-1",
CityId: "-1",
DaysTrip: "",
SalePlat: [],
minGroupSize: "",
maxGroupSize: "",
minApplySize: "",
maxApplySize: "",
FlightID: "-1",
TCIDList: "",
WarningQuery: "-1",
RateOnDay: "-1",
RateOn: "-1",
Title: "", //团名
},
defaultImg: 'this.src="' + require("../../assets/img/bg_z1@2x.png") + '"',
LineList: [],
LineTeamList: [],
AimPlaceList: [],
airlineList: [],
companyList: [],
salePlace: [],
startCityList: [],
startCityList1: [],
tripDetails: [],
ssptList: [],
remarkMsg: {
zc: "",
bzc: "",
fjf: "",
ye: "",
lr: "",
dd: "",
df: "",
dc: "",
srf: "",
qz: "",
qzf: "",
},
otherRemark: "",
ScenicRefundList: [],
PlatformAccountList: [],
ScenicRefundMoney: 0,
TCIDList: null,
tripObj: {
tcid: 0,
configId: 0,
cityId: 0,
orderId: 0,
},
SingleDMCPricex: 0, // 单地接;
SingleDMCPrice: 0, // 单地接;
showHotelObj: {
showPrice: false,
showPay: false,
showZhan: false,
},
PlatformAccountList1: [],
PlatformAccountList2: [],
qjGroupId: -1,
S_Travel_Share: false, //分享权限
userInfo: {},
TotalNumber: 0,
crmOrderObj: null,
isShowTeamOrder: false, //是否显示订单弹窗
teamInfo: {}, //团队信息
};
},
components: {
orderForm,
commonTeamInfo: commonTeamInfo,
tripDownLoadCommon: tripDownLoadCommon,
carousel: carousel,
commonHotelInfo: commonHotelInfo,
},
filters: {
priceFormat(value) {
if (value == null) {
return 0.0;
}
let nStr = value.toFixed(2);
nStr += "";
let x = nStr.split(".");
let x1 = x[0];
let x2 = x.length > 1 ? "." + x[1] : "";
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, "$1" + "," + "$2");
}
return x1 + x2;
},
priceFormat2(value) {
if (value == null) {
return "已包含";
}
let nStr = value.toFixed(2);
nStr += "";
let x = nStr.split(".");
let x1 = x[0];
let x2 = x.length > 1 ? "." + x[1] : "";
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, "$1" + "," + "$2");
}
let result = x1 + x2;
if (result === "0.00") {
result = "已包含";
}
return result;
},
},
methods: {
//刷新页面
reSearchPage() {
this.isShowTeamOrder = false;
this.teamInfo = {};
this.getList();
},
//关闭窗口
closeForm() {
this.isShowTeamOrder = false;
this.teamInfo = {};
},
// 分享权限
GetSupperOrderEditAuth() {
var actionCode = this.$AuthCode.S_Travel_Share;
this.CheckUserAuth(actionCode, (res) => {
if (res.data.resultCode == 1 && res.data.data == 1) {
this.S_Travel_Share = true;
}
});
},
downloadFile(item) {
let reg = /^http(s)?:\/\/(.*?)\//;
this.downloadFileRename(item.FullUrl.replace(reg, ""), item.Name);
},
// 结束日期不能大于开始日期
dataDui() {
if (this.msg.StartTime > this.msg.EndTime && this.msg.EndTime !== "") {
this.$message.error("结束日期不能大于开始日期");
this.msg.EndTime = "";
}
},
// 获取微信二维码
getWxCode(key) {
this.wxLoading = false;
if (this.list[key].wxImage === "") {
this.wxLoading = true;
this.apipost(
"TaskManagemnet_get_GetWeiXinShare", {
ConfigId: this.list[key].ConfigID,
TCID: this.list[key].TCID,
},
(res) => {
if (res.data.resultCode == 1) {
let url = res.data.data;
this.list[key].wxImage = url;
this.wxLoading = false;
} else {
this.$message.error("二维码获取失败");
}
},
(err) => {}
);
}
},
toTrip(obj) {
this.tripObj.tcid = obj.TCID;
this.tripObj.configId = obj.ConfigID;
this.tripObj.cityId = obj.StartCityID;
this.tripObj.orderId = 0;
this.travelControlTripLayerShow = true;
},
hideTripDown() {
this.travelControlTripLayerShow = false;
},
goUrl(path, id, tcmun) {
this.$router.push({
name: path,
query: {
id: id,
tcmun: tcmun,
blank: "y",
tab: "团报名清单",
},
});
},
goUrlX(item) {
this.$router.push({
name: "GroupAdvertising",
query: {
LineID: item.LineID,
TCID: item.TCID,
blank: "y",
tab: "团期广告",
},
});
},
//获取航班详情
getDetails(index) {
this.tripDetails = this.list[index].flightList;
},
goBuy(obj) {
this.teamInfo = obj;
this.isShowTeamOrder = true;
return
this.addObj = obj;
this.addMsg.DepartureCityId = obj.StartCityID;
this.addMsg.ReturnArriveCityId = obj.ReturnArriveCityId;
this.addMsg.GoCityTime = this.starTime = obj.StartCityTime;
this.addMsg.BackCityTime = this.endTime = obj.BackCityTime;
this.addMsg.SonControlID = obj.SonControlID;
this.SingleDMCPrice = obj.SingleDMCPrice;
this.SingleDMCPricex = obj.SingleDMCPrice;
},
getJourney(id, TCID, title) {
var that = this;
this.tripTitle = title;
this.$nextTick(() => {
that.$refs.comTeam.GetTrip(id, TCID);
});
that.outerVisible = true;
},
getList() {
this.loading = true;
this.apipost(
"TaskManagemnet_get_GetSellProductCenter",
this.msg,
(res) => {
if (res.data.resultCode == 1) {
this.loading = false;
this.total = res.data.data.count;
for (let i = 0; i < res.data.data.pageData.length; i++) {
res.data.data.pageData[i]["wxImage"] = "";
}
this.list = res.data.data.pageData;
} else {
this.Error(res.data.message);
}
},
(err) => {}
);
},
// 线路
getLineList() {
this.apipost("line_post_GetAllList_V2", {
LineDirection: 0
}, (res) => {
if (res.data.resultCode == 1) {
this.LineList = res.data.data;
}
});
},
//获取系列列表
getLineTeamList(lineId) {
this.LineTeamList = [];
this.apipost(
"team_post_GetList", {
lineID: lineId,
isTOOP: 1,
},
(res) => {
if (res.data.resultCode == 1) {
this.msg.LineTeamId = "-1";
this.LineTeamList = res.data.data;
}
}
);
},
//获取目的地列表
getAimPlaceList(lineId, lineTeamId) {
let myLineId = lineId === "" ? this.msg.LineId : lineId;
let myLineTeamId = lineTeamId === "" ? this.msg.LineTeamId : lineTeamId;
this.AimPlaceList = [];
this.apipost(
"team_post_GetListForCascading", {
LineID: myLineId,
LtID: myLineTeamId,
},
(res) => {
if (res.data.resultCode == 1) {
this.msg.AimPlaceId = "-1";
this.AimPlaceList = res.data.data;
}
}
);
},
// 出发城市、目的地
getStartList() {
this.apipost("sellorder_get_GetAllStartCity", {}, (res) => {
if (res.data.resultCode == 1) {
this.startCityList = res.data.data;
} else {}
});
},
getStartList1() {
this.apipost(
"city_post_GetList", {
isDefault: -1,
priceType: -1,
},
(res) => {
if (res.data.resultCode == 1) {
this.startCityList1 = res.data.data;
} else {}
}
);
},
// 公司
getCompanyList() {
let RB_Group_id = this.CurrentUserInfo.RB_Group_id;
let msg = {
Status: 0,
is_show: 0,
RB_Group_Id: RB_Group_id,
};
this.apipost(
"admin_get_BranchGetList",
msg,
(res) => {
if (res.data.resultCode == 1) {
this.companyList = [{
Id: "-1",
BName: "不限",
}, ];
res.data.data.forEach((x) => {
var obj = {
Id: "",
BName: "",
};
obj.Id = x.Id.toString();
obj.BName = x.BName;
this.companyList.push(obj);
});
}
},
(err) => {}
);
},
getAirlineList() {
//获取航空公司*
let msg = {};
this.apipost(
"airline_post_GetList",
msg,
(res) => {
this.airlineList = res.data.data;
},
(err) => {}
);
},
getSalePlace() {
this.apipost(
"travel_get_GetTravelSelectEnum", {},
(res) => {
if (res.data.resultCode == 1) {
this.salePlace = res.data.data.SalePlat;
}
},
(err) => {}
);
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
resetPageIndex() {
this.msg.pageIndex = 1;
this.currentPage = 1;
},
clickHotel(TCID, LineId, LineteamId) {
var msg = {
TCID: TCID,
LineId: LineId,
LineteamId: LineteamId,
};
this.apipost(
"b2b_post_SetHotelClickService",
msg,
(res) => {
if (res.data.resultCode == 1) {}
},
(err) => {}
);
},
//直客版行程
goB2B(item) {
var B2BDomain = this.CurrentUserInfo.B2BDomain;
this.$tripUtils.GotoB2CPage(B2BDomain, item.ConfigID, item.TCID);
},
},
mounted() {
// crm自动登陆传过来的参数
if (this.$route.query.crmOrderObj) {
this.crmOrderObj = JSON.parse(this.$route.query.crmOrderObj)
this.addMsg.LureEmpId = this.crmOrderObj.LureEmpId //引流id
this.addMsg.CRMGuestId = this.crmOrderObj.CRMGuestId //客人ID
}
let userInfo = this.getLocalStorage();
this.userInfo = this.getLocalStorage();
this.GetSupperOrderEditAuth();//分享权限
this.qjGroupId = this.QjGroupId();
this.CurrentUserInfo = userInfo;
this.userId = userInfo.EmployeeId;
this.msg.BranchId = userInfo.RB_Branch_id.toString();
if (this.$route.query.id) {
this.msg.BranchId = "-1";
this.msg.TCID = this.$route.query.id;
}
if (this.$route.query.TCIDList) {
this.msg.TCIDList = this.TCIDList = this.$route.query.TCIDList;
}
if (this.msg.StartTime === "") {
let nowDay = this.FormartDate(new Date());
this.msg.StartTime = nowDay;
}
// this.getCompanyList();//公司
// this.getList();//产品列表
// this.getLineList();//线路
// this.getSalePlace();//销售平台
// this.getAirlineList();//获取航空公司
// this.getStartList();//出发城市
// this.getStartList1();//目的地
},
};
</script>
\ No newline at end of file
...@@ -512,7 +512,7 @@ ...@@ -512,7 +512,7 @@
</div> </div>
<div class="c9e fz12"> <div class="c9e fz12">
<span>订单编号:</span> <span>订单编号:</span>
<span>{{ item.OrderNo }}({{ item.OrderId}})</span> <span>{{ item.OrderNo }}({{ item.OrderId}})</span>
<span class="copy cblack cursor-pointer" v-if="copyId != item.OrderId" @click="CopyHandler(item)">复制</span> <span class="copy cblack cursor-pointer" v-if="copyId != item.OrderId" @click="CopyHandler(item)">复制</span>
<span class="copy c059FF6 bgD9F3FF cursor-pointer" v-else><i class="el-icon-check mr"></i>已复制</span> <span class="copy c059FF6 bgD9F3FF cursor-pointer" v-else><i class="el-icon-check mr"></i>已复制</span>
</div> </div>
...@@ -803,9 +803,10 @@ ...@@ -803,9 +803,10 @@
> >
<span class="c059FF6">明细/编辑</span> <span class="c059FF6">明细/编辑</span>
</div> --> </div> -->
<div v-if="item.OrderStatus == 1 && pagesTitle == '销售'" class="row-c cursor-pointer radius5 change py5" <div v-if="(item.OrderStatus == 1 && pagesTitle == '销售')||(item.OrderStatus >1 && item.OrderStatus != 3
@click="goRoomDetails(item, '门票预定变更')"> &&pagesTitle=='OP'&&is_correlationOP)" class="row-c cursor-pointer radius5 change py5"
<span class="c059FF6">订单变更</span> @click="goRoomDetails(item, pagesTitle=='销售'?'门票预定变更':'编辑取票方式')">
<span class="c059FF6">{{pagesTitle=='销售'?'订单变更':'编辑取票方式'}}</span>
</div> </div>
<div v-if="item.OrderStatus > 1" class="row-c cursor-pointer radius5 change1 py5" <div v-if="item.OrderStatus > 1" class="row-c cursor-pointer radius5 change1 py5"
@click="clickRightButtom(item, 4)"> @click="clickRightButtom(item, 4)">
...@@ -814,9 +815,10 @@ ...@@ -814,9 +815,10 @@
</div> </div>
<div <div
v-if="item.OrderStatus >1 && item.OrderStatus != 3 v-if="item.OrderStatus >1 && item.OrderStatus != 3
&& item.OrderStatus != 4
&&pagesTitle=='OP'&&is_correlationOP" &&pagesTitle=='OP'&&is_correlationOP"
class="row-c cursor-pointer radius5 change py5" class="row-c cursor-pointer radius5 change py5"
@click="clickCorrelation(item)" @click="clickCorrelation(item,1)"
> >
<span class="c059FF6">编辑关联OP</span> <span class="c059FF6">编辑关联OP</span>
</div> </div>
...@@ -887,7 +889,7 @@ ...@@ -887,7 +889,7 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 变更订单 --> <!-- 变更订单 -->
<el-dialog custom-class="w800" title="变更订单" :visible.sync="ChangeOrderDialog"> <el-dialog custom-class="w800" :title="pagesTitle=='销售'?'变更订单':'编辑取票方式'" :visible.sync="ChangeOrderDialog">
<div style="padding-bottom:20px"> <div style="padding-bottom:20px">
<div class="flexOne-form-bj"> <div class="flexOne-form-bj">
<h3>取票方式</h3> <h3>取票方式</h3>
...@@ -896,25 +898,19 @@ ...@@ -896,25 +898,19 @@
<div> <div>
<el-radio v-model="msgParameter.MailingState" label="1">自行取票</el-radio> <el-radio v-model="msgParameter.MailingState" label="1">自行取票</el-radio>
<el-radio v-model="msgParameter.MailingState" label="2">邮寄票券</el-radio> <el-radio v-model="msgParameter.MailingState" label="2">邮寄票券</el-radio>
<el-radio v-model="msgParameter.MailingState" label="4">电子券</el-radio>
</div> </div>
</div> </div>
<div class="flexOne-description"> <div class="flexOne-description" v-if="msgParameter.MailingState==1">
<b>自行取票说明</b> <b>自行取票说明</b>
<p>行前往指定位置取票,當您完成付款後我們將通過郵件通知您取票的門票訊息</p> <p>取地址:{{msgParameter.SelffetchAddress?msgParameter.SelffetchAddress:'-'}}</p>
</div> </div>
<div class="flexOne-infor-box"> <div class="flexOne-infor-box">
<b>客人讯息 邮寄讯息</b> <b>{{msgParameter.MailingState==1?'客人讯息':msgParameter.MailingState==2?'邮寄讯息':''}}</b>
<el-form label-width="80px" :model="msgParameter" :rules="rules2" ref="msgParameter"> <el-form v-if="msgParameter.MailingState!=4" label-width="80px" :model="msgParameter" :rules="rules2" ref="msgParameter">
<div class="infor-list"> <div class="infor-list">
<!-- <div class="list-title">
<li>中文姓名</li>
<li>英文姓名</li>
<li>性别</li>
<li>联络电话</li>
<li>收件地址</li>
</div> -->
</span> </span>
<div class="list-centent" :class="{ 'active': msg.MailingState == 1 }"> <div class="list-centent" :class="{ 'active': msgParameter.MailingState == 1 }">
<li> <li>
<el-form-item label="中文名" prop="Name"> <el-form-item label="中文名" prop="Name">
<el-input v-model="msgParameter.Name" placeholder="请输入名称" /> <el-input v-model="msgParameter.Name" placeholder="请输入名称" />
...@@ -937,6 +933,12 @@ ...@@ -937,6 +933,12 @@
placeholder="请输入邮寄地址" /> placeholder="请输入邮寄地址" />
</el-form-item> </el-form-item>
</li> </li>
<li v-if="msgParameter.MailingState == 2">
<el-form-item label="邮寄费" prop="MailingMoney">
<el-input type="Number" style="border-radius: 3px;" v-model="msgParameter.MailingMoney"
placeholder="请输入邮寄费" />
</el-form-item>
</li>
<li class="bottom"> <li class="bottom">
<el-form-item label="性别" prop="Sex"> <el-form-item label="性别" prop="Sex">
<el-radio v-model="msgParameter.Sex" label="1"></el-radio> <el-radio v-model="msgParameter.Sex" label="1"></el-radio>
...@@ -946,7 +948,7 @@ ...@@ -946,7 +948,7 @@
</div> </div>
</div> </div>
</el-form> </el-form>
<div style="margin-top: 20px;"> <div v-if="pagesTitle=='销售'" style="margin-top: 20px;">
<el-input style="width: 100%;" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" <el-input style="width: 100%;" type="textarea" :autosize="{ minRows: 2, maxRows: 4 }"
v-model="msgParameter.Remark" placeholder="订单备注" /> v-model="msgParameter.Remark" placeholder="订单备注" />
</div> </div>
...@@ -1055,6 +1057,9 @@ export default { ...@@ -1055,6 +1057,9 @@ export default {
message: '请输入邮寄地址', message: '请输入邮寄地址',
trigger: 'blur' trigger: 'blur'
}], }],
MailingMoney: [
{ required: true, message: "请输入邮寄费用", trigger: "blur" },
],
}, },
outerVisible: false, outerVisible: false,
rules: { rules: {
...@@ -1122,7 +1127,7 @@ export default { ...@@ -1122,7 +1127,7 @@ export default {
this.close() this.close()
this.$emit('success') this.$emit('success')
}, },
clickCorrelation(item){ clickCorrelation(item,type){
this.CorrelationObj = item this.CorrelationObj = item
this.CorrelationObj.TypeNum = 2 this.CorrelationObj.TypeNum = 2
this.isShowCorrelation = true this.isShowCorrelation = true
...@@ -1172,7 +1177,24 @@ export default { ...@@ -1172,7 +1177,24 @@ export default {
if (this.msgParameter.MailingState == '1') { if (this.msgParameter.MailingState == '1') {
this.msgParameter.MailingAddress = '' this.msgParameter.MailingAddress = ''
} }
let m = { let m
let url
if(this.pagesTitle=='OP'){
m = {
OrderId: this.msgParameter.OrderId,
MailingMoney: this.msgParameter.MailingMoney,
MailingState: this.msgParameter.MailingState,//邮寄状态 1自取 2邮寄
MailingAddress: this.msgParameter.MailingAddress,//MailingState =2 填写邮寄
SelffetchAddress: this.msgParameter.SelffetchAddress,//自取地址
Name: this.msgParameter.Name,
EName: this.msgParameter.EName,
Sex: this.msgParameter.Sex,//1男2女
Mobile: this.msgParameter.Mobile,
}
url = 'dict_post_SetTicketOrderMailingState'
}
if(this.pagesTitle=='销售'){
m = {
IsUpdateMailing: 1, IsUpdateMailing: 1,
OrderId: this.msgParameter.OrderId, OrderId: this.msgParameter.OrderId,
CouponsId: this.msgParameter.CouponsId, CouponsId: this.msgParameter.CouponsId,
...@@ -1188,16 +1210,18 @@ export default { ...@@ -1188,16 +1210,18 @@ export default {
Mobile: this.msgParameter.Mobile, Mobile: this.msgParameter.Mobile,
Remark: this.msgParameter.Remark, Remark: this.msgParameter.Remark,
} }
url = 'ticket_post_SetSaleTicketOrder'
}
this.loading3 = true this.loading3 = true
this.apipost("ticket_post_SetSaleTicketOrder", m, this.apipost(url, m,
res => { res => {
this.loading3 = false this.loading3 = false
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.Success('变更成功'); this.Success(`${this.pagesTitle=='销售'?'变更订单':'编辑取票方式'}成功`);
this.$emit('success') this.$emit('success')
this.ChangeOrderDialog = false this.ChangeOrderDialog = false
} else { } else {
this.Error('变更失败') this.Error(`${this.pagesTitle=='销售'?'变更订单':'编辑取票方式'}失败`)
} }
}, },
err => { err => {
...@@ -1314,8 +1338,29 @@ export default { ...@@ -1314,8 +1338,29 @@ export default {
this.msgParameter.MailingState = JSON.stringify(this.msgParameter.MailingState) this.msgParameter.MailingState = JSON.stringify(this.msgParameter.MailingState)
this.msgParameter.Sex = JSON.stringify(this.msgParameter.Sex) this.msgParameter.Sex = JSON.stringify(this.msgParameter.Sex)
this.ChangeOrderDialog = true this.ChangeOrderDialog = true
// 获取自取地址
this.GetTicketCouponsInfo()
} }
}, },
GetTicketCouponsInfo(){
this.apipost('ticket_post_GetTicketCouponsInfo',{
CouponsId: this.msgParameter.CouponsId,
OpenTime: this.msgParameter.UseDate,
},
res => {
this.loading3 = false
if (res.data.resultCode == 1) {
this.msgParameter.SelffetchAddress = res.data.data.SelffetchAddress
let arr = res.data.data.TicketPriceList.sort((a,b)=>{
return a.MailingMoney-b.MailingMoney
})
this.msgParameter.MailingMoney = this.msgParameter.MailingMoney?this.msgParameter.MailingMoney:arr[0].MailingMoney
}
},
err => {
this.Error(err.message)
})
},
clickRightButtom(item, type) { clickRightButtom(item, type) {
// 0取消订单 1确认订单 2已邮寄 3设置自提地址 4收损 // 0取消订单 1确认订单 2已邮寄 3设置自提地址 4收损
this.msg.OrderId = item.OrderId; this.msg.OrderId = item.OrderId;
......
...@@ -376,7 +376,7 @@ export default { ...@@ -376,7 +376,7 @@ export default {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.HotelList = res.data.data; this.HotelList = res.data.data;
} else { } else {
message.errorMsg(res.data.message); this.Error(res.data.message)
} }
}, },
err => { } err => { }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment