Commit 848ec65d authored by youjie's avatar youjie

no message

parent f2b30ee3
......@@ -99,7 +99,7 @@
@close="close"></TableOperation>
</el-dialog>
<!-- 购物车 -->
<ListCar v-if="rightCarOpen" @close="close" @success="success" @editor="editor"></ListCar>
<ListCar v-if="rightCarOpen" :crmOrderObj="crmOrderObj" @close="close" @success="success" @editor="editor"></ListCar>
<!-- 酒店详情信息 -->
<el-dialog custom-class="w800" title="酒店详情" :visible.sync="showHotelDetails" center @close="close">
<hotelDetails :hotelId="HotelDetailId"></hotelDetails>
......@@ -178,7 +178,8 @@
dataList: [],
isShow: false,
loading: false,
HOTEL_memorandum: false
HOTEL_memorandum: false,
crmOrderObj: null
};
},
watch: {
......@@ -320,6 +321,10 @@
},
},
mounted() {
// crm自动登陆传过来的参数
if(this.$route.query.crmOrderObj){
this.crmOrderObj = JSON.parse(this.$route.query.crmOrderObj)
}
this.HotelLength = localStorage.getItem("HotelLength")?localStorage.getItem("HotelLength"):0
let userinfo = this.getLocalStorage();
......
......@@ -67,6 +67,10 @@
<div v-if="cars.length==0" style="text-align: center;padding: 20px 0;">暂无数据</div>
</div>
<div class="ListCar-bottom" v-if="cars.length>0">
<div v-if="crmOrderObj" style="margin-bottom: 10px;">
<span style="color: red;">引流人:{{crmOrderObj.LureEmpNmae}} </span>
<span style="color: #2AAEF2;">/客人:{{crmOrderObj.CRMGuestName}}</span>
</div>
<el-form label-width="60px" :model="parameters" :rules="rules" ref="parameters">
<el-row :gutter="20">
<el-col :span="12">
......@@ -123,6 +127,10 @@
<script>
export default {
props: {
crmOrderObj: {
type: Object,
require: false
},
HotelRow: {
type: Object,
require: false
......@@ -146,7 +154,9 @@
TCNum: '', //=团队时 传递 组团号
ContactName: '', //=散客时 传递 联系人
ContactNumber: '', //=散客时 传递 联系人电话
OrderId: 0
OrderId: 0,
LureEmpId: 0,
CRMGuestId: 0,
},
currentIndex: 0,
currentI: 0,
......@@ -184,6 +194,18 @@
};
},
watch: {
crmOrderObj: {
handler: function (val, oldVal) {
this.crmOrderObj = val
console.log(this.crmOrderObj)
if(this.crmOrderObj){
this.parameters.LureEmpId = val.LureEmpId//引流id
this.parameters.CRMGuestId = val.CRMGuestId //客人ID
}
},
deep: true,
immediate: true
},
cars: {
handler: function (val, oldVal) {
this.HotelLength = this.cars.length
......@@ -396,7 +418,7 @@
}
.ListCar-content{
padding: 20px 15px;
height: calc(100% - 195px);
height: calc(100% - 230px);
overflow: auto;
}
.ListCar-list{
......
......@@ -549,6 +549,10 @@
<div class="productQuerybottomLayer ownScrollbarStyle" v-show="isShowLayer">
<p>
{{ $t("salesModule.SignImdi") }}
<span v-if="crmOrderObj">
<span style="color: red;">引流人:{{crmOrderObj.LureEmpNmae}} </span>
<span style="color: #2AAEF2;">/客人:{{crmOrderObj.CRMGuestName}}</span>
</span>
<span class="fr">
<input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="cancelSubmit()" />
<input type="button" class="normalBtn" :value="$t('salesModule.SignImdi')" @click="submitForm('addMsg')" />
......@@ -1833,6 +1837,8 @@
SonControlID: "-1",
IsShowMessagesMoney: "2",
QuotationUrl: "", //单团附件
LureEmpId: 0,//引流id
CRMGuestId: 0, //客人ID
},
uploadLloading: false,
employeeMsg: {
......@@ -1966,6 +1972,7 @@
S_Travel_Share: false, //分享权限
userInfo: {},
TotalNumber: 0,
crmOrderObj: null
};
},
components: {
......@@ -3627,6 +3634,12 @@
}
},
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();
......
......@@ -178,6 +178,10 @@
<div class="productQuerybottomLayer ownScrollbarStyle" v-show="isShowLayer">
<p>
{{$t('salesModule.SignImdi')}}
<span v-if="crmOrderObj">
<span style="color: red;">引流人:{{crmOrderObj.LureEmpNmae}} </span>
<span style="color: #2AAEF2;">/客人:{{crmOrderObj.CRMGuestName}}</span>
</span>
<span class="fr">
<input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="cancelSubmit()" />
<input type="button" class="normalBtn" :value="$t('salesModule.SignImdi')" @click="submitForm('addMsg')" />
......@@ -1064,7 +1068,9 @@
SonControlID: '-1',
IsShowMessagesMoney: '2',
GuestList: [],
GatherAddress: ''
GatherAddress: '',
LureEmpId: 0,//引流id
CRMGuestId: 0, //客人ID
},
GuestList: [
{
......@@ -1280,6 +1286,7 @@
countryList: [],//国籍
//当前登录用户信息
CurrentUserInfo: {},
crmOrderObj: null,
}
},
components: {
......@@ -2451,6 +2458,13 @@
},
},
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
}
this.userId = this.getLocalStorage().EmployeeId
this.msg.BranchId = this.getLocalStorage().RB_Branch_id.toString()
if (this.$route.query.id) {
......
......@@ -344,7 +344,11 @@
layout="total,prev, pager, next, jumper" :page-size="this.msg.pageSize" :total="total">
</el-pagination>
<div class="_mc_edit _scrollbar" :class="addShow==true?'edHeight':''">
<p class="_tit">{{$t('Operation.Op_signUp')}}
<p class="_tit">{{$t('Operation.Op_signUp')}}
<span v-if="crmOrderObj">
<span style="color: red;">引流人:{{crmOrderObj.LureEmpNmae}} </span>
<span style="color: #2AAEF2;">/客人:{{crmOrderObj.CRMGuestName}}</span>
</span>
<span class="fr">
<button class="hollowFixedBtn" type="button" @click="cancelEdit()">{{$t('pub.cancelBtn')}}</button>
<button type="button" class="normalBtn" @click="saveVisa()">{{$t('pub.saveBtn')}}</button>
......@@ -495,7 +499,9 @@
LeaveCountryFlight: '',
VisaPlanId: 0,
DepartDate: '',
ClientType: '1'
ClientType: '1',
LureEmpId: 0,//引流id
CRMGuestId: 0, //客人ID
},
rules: {
PeopleNum: [{
......@@ -531,6 +537,7 @@
total: 0,
addShow: false,
currentPage: 1,
crmOrderObj: null
}
},
methods: {
......@@ -705,6 +712,8 @@
}, err => {})
},
saveVisa() { // 保存
console.log(this.addMsg,'===')
// return
this.$refs['addMsg'].validate((valid) => {
if (valid) {
this.apipost('dmc_get_visa_SetVisaOrder', this.addMsg, res => {
......@@ -723,7 +732,9 @@
EnterCountryFlight: '',
LeaveCountryFlight: '',
VisaPlanId: 0,
DepartDate: ''
DepartDate: '',
LureEmpId: 0,
CRMGuestId: 0
}
this.$message.success(res.data.message)
this.addShow = false
......@@ -758,6 +769,12 @@
},
},
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
}
this.userId = this.getLocalStorage().EmployeeId
this.msg.RB_Branch_Id = this.getLocalStorage().RB_Branch_id.toString()
this.getList()
......
<style>
</style>
<template>
<div>
<TicketOrder :pagesTitle="pagesTitle" :dataObj="dataObj"></TicketOrder>
</div>
</template>
<script>
import TicketOrder from './components/TicketOrder.vue';
export default {
components: { TicketOrder },
data() {
return {
pagesTitle: '销售',
dataObj:{
OrderId: '',
}
};
},
watch: {
pagesTitle(val,oldval){
},
},
methods: {
},
created() {
},
mounted() {
if(this.$route.query.OrderId){
this.dataObj.OrderId = this.$route.query.OrderId
}
},
};
</script>
<style>
</style>
<style scoped>
.tatusText.grey {
color: grey;
}
.tatusText.success {
color: #21ba45;
}
.tatusText.error {
color: #f2c037;
}
.tatusText.cancel {
color: #c1c1c1;
}
.tatusText.Black {
color: Black;
}
.OrderId-text {
font-size: 19px;
/* text-decoration:underline; */
font-weight: bold;
color: #2961fe;
margin-bottom: 3px;
cursor: pointer;
}
.CreateByName-text.Commission {
color: red;
margin-top: 5px;
margin-bottom: 5px;
}
.el-checkbox-group,.el-radio-group{
display: flex !important;
margin-bottom: 10px !important;
}
.font-color-link{
cursor: pointer;
}
.OrderType-text{
font-size: 11px;
font-weight: 100;
margin-left: 5px;
border-radius: 3px;
display: inline-block;
padding: 0 1px;
}
.line-through{
text-decoration: line-through;
}
.OrderType-text.one{
color: rgb(41, 97, 254);
background-color: rgba(41, 97, 254,.2);
}
.OrderType-text.two{
color: rgb(242, 140, 29);
background-color: rgba(242, 140, 29,.2);
}
.OrderType-text.three{
color: rgb(63, 196, 255);
background-color: rgba(63, 196, 255,.2);
}
.OrderType-text.four{
color: rgb(255,111,0);
background-color: rgba(255,111,0,.2);
}
.OrderType-text.five{
color: rgb(197,225,165);
background-color: rgba(97,225,165,.2);
}
.row {
display: flex;
}
.row-c {
display: flex;
align-items: center;
}
.column {
display: flex;
flex-direction: column;
}
.column-jac {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.column-ac {
display: flex;
flex-direction: column;
align-items: center;
}
.wrap {
flex-wrap: wrap;
}
.justify-sb {
justify-content: space-between;
}
.justify-c {
justify-content: center;
}
.justify-e {
justify-content: flex-end;
align-items: flex-end;
}
.flex-g {
flex-grow: 1;
}
.flex-s {
flex-shrink: 0;
}
.align-c {
align-items: center;
}
.cblack {
color: black;
}
.cf {
color: #ffffff;
}
.c9e {
color: #9e9e9e;
}
.c20C997 {
color: #20c997;
}
.c02C854 {
color: #02c854;
}
.cff9800 {
color: #ff9800;
}
.cF1416C {
color: #f1416c;
}
.cF57A98 {
color: #f57a98;
}
.c04C8C8 {
color: #04c8c8;
}
.c059FF6 {
color: #059ff6;
}
.c3FC4FF {
color: #3fc4ff;
}
.fz10 {
font-size: 10px;
}
.fz11 {
font-size: 11px;
}
.fz12 {
font-size: 12px;
}
.fz13 {
font-size: 13px;
}
.fz14 {
font-size: 14px;
}
.fz15 {
font-size: 15px;
}
.fz16 {
font-size: 16px;
}
.fz17 {
font-size: 17px;
}
.fz18 {
font-size: 18px;
}
.fbold {
font-weight: bold;
}
.ml {
margin-left: 10px;
}
.mr {
margin-right: 10px;
}
.mt {
margin-top: 10px;
}
.mt20 {
margin-top: 20px;
}
.mb {
margin-bottom: 10px;
}
.mb20 {
margin-bottom: 20px;
}
.mx {
margin-left: 10px;
margin-right: 10px;
}
.mx5 {
margin-left: 5px;
margin-right: 5px;
}
.mb5 {
margin-bottom: 5px;
}
.py {
padding: 15px 0;
}
.py5 {
padding: 5px 0;
}
.px5 {
padding: 0 5px;
}
.px15 {
padding: 0 15px;
}
.pa15 {
padding: 15px;
}
.py20 {
padding: 20px 0;
}
.pb5 {
padding: 0 0 5px 0;
}
.pa {
padding: 10px 20px;
}
.pa20 {
padding: 20px;
}
.pt20 {
padding: 20px 0;
}
.borderD {
border-bottom: 1px dashed #dddddd;
}
.bgf {
background: #ffffff;
}
.bgf5 {
background: #f5f5f5;
}
.bgE8F5E9 {
background: #e8f5e9;
}
.bgD9F3FF {
background: #d9f3ff;
}
.bgFAEAED {
background: #faeaed;
}
.bj {
background: #ffffff;
}
.bjFFF3E0 {
background: #FFF3E0;
}
.radius5 {
border-radius: 5px;
}
.cursor-pointer {
cursor: pointer;
}
.relative {
position: relative;
}
.absolute {
position: absolute;
}
.left0 {
left: 0;
}
.right0 {
right: 0;
}
.top0 {
top: 0;
}
.bottom0 {
bottom: 0;
}
.left20 {
left: 020px;
}
.right20 {
right: 20px;
}
.top20 {
top: 20px;
}
.bottom20 {
bottom: 20px;
}
.text-center {
text-align: center;
}
.orderType {
padding: 3px 15px;
border-radius: 3px;
background: #f57a98;
margin-right: 15px;
}
.orderType.active {
background: #4dd0e1;
}
.orderType.activeB {
background: #E95252;
}
.copy {
display: inline-block;
padding: 3px 15px;
border-radius: 3px;
margin-left: 20px;
}
.copy:hover {
background: #f5f5f5;
}
.see-rec div {
padding: 1px 5px;
border-radius: 3px;
}
.see {
border: 1px solid #04c8c8;
}
.seeLK {
border: 1px solid #059ff6;
}
.see:hover {
background-color: rgba(4, 200, 200, 0.1);
}
.rec {
border: 1px solid #04c8c8;
background-color: rgba(4, 200, 200, 1);
}
.rec:hover {
border: 1px solid rgba(4, 200, 200, 0.9);
background-color: rgba(4, 200, 200, 0.9);
}
.cancel:hover {
background-color: #f3dce2;
}
.confirm:hover {
background-color: #dcedc8;
}
.change:hover {
background-color: #d7e9f3;
}
.change1:hover {
background-color: #dcedc8;
}
.orderop {
text-align: center;
}
.orderop div {
width: 100px;
height: 50%;
display: flex;
justify-content: center;
}
.RoomList div {
border-bottom: 1px solid #e7e7e7;
}
.RoomList div:last-child {
border: 0;
}
.el-table {
font-size: 13px;
}
.shezhifrom {
position: relative;
}
.shebox {
position: absolute;
top: 0;
left: -100px;
display: none;
}
.shezhifrom:hover .shebox {
display: block;
}
.flexOne-form-bj h3{
font-size: 18px;
color: black;
padding: 0 0 20px 0;
font-weight: 400;
}
.flexOne-type{
display: flex;
align-items: center;
padding: 0 0 20px 0;
}
.flexOne-type b{
font-size: 13px;
width: 100px;
flex-shrink: 0;
}
.flexOne-type div{
display: flex;
}
.flexOne-description{
padding: 15px 15px;
border-radius: 5px;
background: #E1F5FE;
margin-bottom: 20px;
}
.flexOne-description b{
font-size: 14px;
}
.flexOne-description p{
font-size: 12px;
color: #4C5759;
padding: 10px 0 0 0;
}
.flexOne-infor-box b{
font-size: 13px;
}
.infor-list{
display: flex;
flex-direction: column;
}
.list-title{
padding: 20px 0;
border-bottom: 1px dashed #eeeeee;
color: #7E8299;
font-size: 13px;
}
.list-title,.list-centent{
display: flex;
flex-wrap: wrap;
margin-top: 20px;
}
.infor-list li{
width: 25%;
}
.list-centent li {
width: 33.33%;
}
.list-centent.active li {
width: 25%;
}
/deep/.el-table tr td:first-child{
border-bottom: 0;
}
/deep/.el-table tr:last-child td{
border-bottom: 1px solid #EBEEF5;
}
/deep/.el-table tr td{
border-bottom: 1px solid #EBEEF5;
}
.cp{
cursor: pointer;
}
</style>
<template>
<div>
<div
v-for="(item, index) in OrderList"
class="column bgf radius5 px15 mb20"
>
<div class="row-c justify-sb align-c py">
<div class="row-c">
<div>
<!-- <div
class="orderType cf fz12"
:class="{ active: item.OrderType == 1,
activeB: item.OrderType == 3}"
>
</div> -->
<span
class="orderType OrderType-text cf fz12"
:class="[items.Id==1?'one':
(items.Id==2?'two':
(items.Id==3?'three':
(items.Id==4?'four':
(items.Id==5?'five':'')))),{'line-through':items.show}]"
v-for="(items,i) in item.MultipleChoiceList"
>
{{items.Name}}
</span>
<!-- <span class="OrderType-text"
:class="[items.Id==1?'one':
(items.Id==2?'two':
(items.Id==3?'three':
(items.Id==4?'four':
(items.Id==5?'five':'')))),{'line-through':items.show}]"
v-for="(items,i) in item.MultipleChoiceList">{{items.Name}}</span> -->
</div>
<div class="c9e fz12">
<span>订单编号:</span>
<span>{{ item.OrderId }}</span>
<span
class="copy cblack cursor-pointer"
v-if="copyId != item.OrderId"
@click="CopyHandler(item)"
>复制</span
>
<span class="copy c059FF6 bgD9F3FF cursor-pointer" v-else
><i class="el-icon-check mr"></i>已复制</span
>
</div>
</div>
<div class="c9e fz12">
<span>客人信息:{{ item.GuestName }}/{{ item.MobilePhone }}</span>
</div>
<div class="row c9e fz12">
<span>销售:</span>
<span class="mr">
{{ item.EnterName }}
</span>
<span class="mr" v-if="item.CreateByName">引流人:</span>
<span class="mr" v-if="item.CreateByName"
>{{ item.CreateByName }}</span>
<span>下单时间:</span>
<span class="mr">{{ item.CreateTime }}</span>
<div class="">
<i
class="mx5"
:class="{
'el-icon-alarm-clock c20C997': item.OrderStatus == 1,
'el-icon-check cblack': item.OrderStatus == 2,
'el-icon-warning cff9800': item.OrderStatus == 3,
'el-icon-refresh cF1416C': item.OrderStatus == 4,
'el-icon-check cblack': item.OrderStatus == 5,
'el-icon-refresh cF1416C': item.OrderStatus == 6
}"
>
{{item.OrderStatusName}}{{item.OrderStatus}}</i>
<!-- <div class="Order-list-Status" :class="item.OrderStatus=='1'?'one':
(item.OrderStatus=='2'?'two':
(item.OrderStatus=='3'?'three':
(item.OrderStatus=='4'?'four':
(item.OrderStatus=='5'?'five':
(item.OrderStatus=='6'?'six':'')))))">
<span>{{item.OrderStatusName}}</span>
</div> -->
</div>
</div>
</div>
<div class="mb">
<el-table :data="[item]" style="width:100%" border>
<el-table-column
label="日期"
min-width="100"
style="background:#EAEAEA"
>
<template slot-scope="scope">
<template>
<p class="CreateByName-text" v-if="scope.row.DepartTime">出发:<span>{{scope.row.DepartTime}}</span></p>
<p class="CreateByName-text" v-if="scope.row.OrderStatus == 5">完结:<span>{{scope.row.FinishTime}}</span></p>
<p class="CreateByName-text" v-if="scope.row.OrderStatus == 6">完结:<span >{{scope.row.LossFinishTime}}</span></p>
<p class="CreateByName-text Commission cp" v-if="scope.row.Commission" @click="commissionDetails(scope.row)">提成:<span>{{scope.row.Commission}}</span></p>
</template>
</template>
</el-table-column>
<el-table-column label="人数" >
<template slot-scope="scope">
{{scope.row.GuestCount}}
</template>
</el-table-column>
<el-table-column label="出行概述">
<template slot-scope="scope">
{{ scope.row.StartCityName }}
</template>
</el-table-column>
<el-table-column label="应收">
<template slot-scope="scope">
{{ scope.row.IncomeMoney }}
</template>
</el-table-column>
<el-table-column label="实收">
<template slot-scope="scope">
{{ scope.row.BackMoney }}
</template>
</el-table-column>
<el-table-column label="退款">
<template slot-scope="scope">
{{ scope.row.PayMoney }}
</template>
</el-table-column>
<el-table-column label="成本">
<template slot-scope="scope">
{{ scope.row.PayMoney }}
</template>
</el-table-column>
<el-table-column label="手续费">
<template slot-scope="scope">
{{ scope.row.TaxMoney }}
</template>
</el-table-column>
<el-table-column label="待收">
<template slot-scope="scope">
<span :class="{'cF1416C':scope.row.DueinMoney>0}">{{ scope.row.DueinMoney }}</span>
</template>
</el-table-column>
<el-table-column label="出票状态" style="background:#EAEAEA">
<template slot-scope="scope">
<span @click="scope.row.TicketStatusName!='无需机票'?modifyStatus(scope.row):''"
class="cp tatusText"
:class="item.TicketStatus==1?'grey':
(scope.row.TicketStatus==2?'success':
(scope.row.TicketStatus==3?'error':
(scope.row.TicketStatus==4?'cancel':
(scope.row.TicketStatus==5?'Black':''))))">
{{item.TicketStatusName}}
</span>
<i v-if="scope.row.TicketStatus!=1&&scope.row.TicketVoucherList!=[]&&scope.row.CancelVoucherList!=[]&&scope.row.TicketStatusName!='无需机票'" class="cp iconfont iconpingzhengchaxun Credentials"
@click="viewCredentials(scope.row)"></i>
</template>
</el-table-column>
<el-table-column label="签证状态" style="background:#EAEAEA">
<template slot-scope="scope">
<span @click="scope.row.VisaStatus=='1'?AmendVisa(scope.row):''"
class="tatusText"
:class="scope.row.VisaStatus==1?'grey'+' cp':
(scope.row.VisaStatus==2?'success':
(scope.row.VisaStatus==0?'Black':''))">
{{scope.row.VisaStatus==1?'未出签':(scope.row.VisaStatus==2?'已出签':'无需签证')}}
</span>
<i v-if="scope.row.VisaStatus==2" class="cp iconfont iconpingzhengchaxun Credentials"
@click="CheckOutDetails(scope.row)"></i>
</template>
</el-table-column>
<el-table-column label="数量" style="background:#EAEAEA">
<template slot-scope="scope">
{{ scope.row.Num }}
</template>
</el-table-column>
<el-table-column
label="小计"
min-width="70"
style="background:#EAEAEA"
>
<template slot-scope="scope">
<span class="fz15 fbold">{{ scope.row.Money.toFixed(2) }}</span>
</template>
</el-table-column>
<template slot="append" v-if="item.Remark">
<div style="padding:10px;color:#f1416c">客户备注:{{item.Remark}}</div>
</template>
</el-table>
</div>
<el-table :data="[item]" style="width:100%" border v-if="item.OrderStatus!=3">
<el-table-column label="实收" min-width="100">
<template slot-scope="scope">
<span class="fz15 fbold">{{ scope.row.Income ? scope.row.Income : "-" }}</span>
</template>
</el-table-column>
<el-table-column label="成本" min-width="100">
<template slot-scope="scope">
<span class="fz15 fbold">{{ scope.row.CostMoney ? scope.row.CostMoney : "-" }}</span>
</template>
</el-table-column>
<el-table-column label="平台税金" min-width="100">
<template slot-scope="scope">
<span class="fz15 fbold">{{
scope.row.PlatformTax ? scope.row.PlatformTax : "-"
}}</span>
</template>
</el-table-column>
<el-table-column label="退款" min-width="100">
<template slot-scope="scope">
<span class="fz15 fbold">{{ scope.row.Refund ? scope.row.Refund : "-" }}</span>
</template>
</el-table-column>
<el-table-column label="毛利" min-width="100">
<template slot-scope="scope">
<span class="fz15 fbold">{{ scope.row.Income-scope.row.CostMoney-scope.row.Refund>0?scope.row.Income-scope.row.CostMoney-scope.row.Refund:'-' }}</span>
</template>
</el-table-column>
</el-table>
<div class="row justify-sb mt mb20">
<div class="column px15 bgf5 radius5 flex-g pa relative">
<div class="fz12">收款单据</div>
<div class="row wrap orderNo fz12 py">
<span
class="cursor-pointer radius5 mr px5"
:class="{'bgD9F3FF':x.Status==0,'bgFAEAED':x.Status==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==0,'cF1416C':x.Status==1,'cff9800':x.Status==2}"
v-for="(x, i) in item.IncomeFinance"
@click="openDetails(x)"
>{{ x.FrID }}</span
>
<span v-if="item.IncomeFinance.length == 0" class="c9e fz12">
暂无收款单据
</span>
</div>
<el-tooltip
v-if="item.OrderStatus == 2"
class="item"
effect="dark"
content="制单"
placement="top"
>
<i
class="absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@click="makeAdocument(item, index, 1)"
></i>
</el-tooltip>
</div>
<div class="column px15 bgf5 radius5 ml flex-g pa relative">
<div class="fz12">退款单据</div>
<div class="row wrap orderNo fz12 py">
<span
class="cursor-pointer radius5 mr px5"
:class="{'bgD9F3FF':x.Status==0,'bgFAEAED':x.Status==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==0,'cF1416C':x.Status==1,'cff9800':x.Status==2}"
v-for="(x, i) in item.BackFinance"
@click="openDetails(x)"
>{{ x.FrID }}</span
>
<span v-if="item.BackFinance.length == 0" class="c9e fz12">
暂无退款单据
</span>
</div>
<el-tooltip
v-if="item.OrderStatus == 2"
class="item"
effect="dark"
content="制单"
placement="top"
>
<i
class="absolute right20 bottom20 el-icon-circle-plus cursor-pointer c059FF6"
@click="makeAdocument(item, index, 2)"
></i>
</el-tooltip>
</div>
<div class="column px15 bgf5 radius5 ml flex-g pa relative">
<div class="fz12">成本单据</div>
<div class="row wrap orderNo fz12 py">
<span
class="cursor-pointer radius5 mr px5"
:class="{'bgD9F3FF':x.Status==0,'bgFAEAED':x.Status==1,'bjFFF3E0':x.Status==2,
'c3FC4FF':x.Status==0,'cF1416C':x.Status==1,'cff9800':x.Status==2}"
v-for="(x, i) in item.PayFinance"
@click="openDetails(x)"
>{{ x.FrID }}</span
>
<span v-if="item.PayFinance.length == 0" class="c9e fz12">
暂无成本单据
</span>
</div>
<div class="item absolute right20 bottom20" v-if="item.OrderStatus == 2 && pagesTitle != '销售'">
<el-tooltip class="" effect="dark" content="制单"
placement="top">
<i class="el-icon-circle-plus cursor-pointer c059FF6"
@click="makeAdocument(item, index, 3)"></i>
</el-tooltip>
<el-tooltip class="" effect="dark" content="冲抵" placement="top">
<i class="el-icon-circle-plus cursor-pointer c3FC4FF"
@click="isOffset(item, index, 3)"></i>
</el-tooltip>
</div>
</div>
<div class="column justify-c px15 bgf5 radius5 ml flex-g pa20">
<div class="row-c justify-sb pb5" :class="{'borderD':item.DiscountsMoney>0}">
<span class="fz12 c9e">订单总金额</span>
<div class="ml">
<span class="fz15 fbold">{{ item.Money.toFixed(2) }}</span>
<span class="fz12 ml">
{{item.CurrencyName}}
</span>
</div>
</div>
<div
class="row-c justify-sb py5"
v-if="item.DiscountsMoney>0"
>
<span class="fz12 c9e">优惠金额</span>
<div class="ml">
<span class="fz14">{{ item.DiscountsMoney.toFixed(2) }}</span>
<span class="fz12">{{ item.CurrencyName }}</span>
</div>
</div>
</div>
<div
v-if="item.OrderStatus > 0 && item.OrderStatus < 4 && item.OrderStatus!=3"
class="column justify-c px15 bgE8F5E9 radius5 ml fz12 orderop pa20 flex-s"
>
<div
v-if="
item.OrderStatus == 1 &&
item.IncomeList.length == 0 &&
item.RefundList.length == 0 &&
item.CostList.length == 0 && item.OrderSource!=1
"
class="row-c cursor-pointer radius5 cancel py5"
@click="clickRightButtom(item, 0)"
>
<i v-loading="msg.OrderId==item.OrderId&&loading0"></i>
<span class="cF1416C">取消订单</span>
</div>
<div
v-if="item.OrderStatus == 1&&pagesTitle!='销售'&&item.OrderSource!=1"
class="row-c cursor-pointer radius5 confirm py5"
@click="clickRightButtom(item, 1)"
>
<i v-loading="msg.OrderId==item.OrderId&&loading1"></i>
<span class="c20C997">确认订单</span>
</div>
<div
v-if="item.OrderStatus == 1&&pagesTitle=='销售'"
class="row-c cursor-pointer radius5 change py5"
@click="goRoomDetails(item, '变更订单')"
>
<span class="c059FF6">订单变更</span>
</div>
<div
v-if="item.OrderStatus > 1"
class="row-c cursor-pointer radius5 change1 py5"
@click="clickRightButtom(item, 2)"
>
<i v-loading="msg.OrderId==item.OrderId&&loading2"></i>
<span class="c20C997">收损</span>
</div>
</div>
</div>
<div class="mt mb20 bgf5 pa15 row-c" v-if="item.CancelRemark">
<div style="font-size:16px;font-weight:bold;font-family: pingfangR;">取消理由:</div>
<div style="margin-left:12px;font-size:12px;color: grey; font-family: microsoft yahei;">{{item.CancelRemark}}</div>
<div style="margin-left:12px;font-size:12px;font-family: microsoft yahei;">
{{item.CancelEmpName}} {{item.CancelTime}}
</div>
</div>
</div>
<el-dialog
custom-class="w400"
title="设置收损金额"
:visible.sync="outerVisible"
>
<div>
<el-form label-width="80px" :model="msg" :rules="rules" ref="msg">
<el-row :gutter="20">
<el-col :span="20">
<el-form-item label="收损金额" prop="LossMoney">
<el-input-number
class="w200"
v-model="msg.LossMoney"
:min="0"
:max="10000000"
></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" style="margin-top: 20px;margin-bottom: 20px;">
<el-col :span="24" style="text-align: right;">
<input
type="button"
class="normalBtn"
value="保存"
@click="submitForm('msg')"
/>
<input
type="button"
class="hollowFixedBtn"
value="取消"
@click="(outerVisible = false), $refs['msg'].resetFields()"
/>
</el-col>
</el-row>
</el-form>
</div>
</el-dialog>
<el-dialog
custom-class="w600"
title="取消订单"
:visible.sync="cancelOrderDialog"
>
<div style="padding-bottom:20px">
<el-input
type="textarea"
autofocus
rows="5"
placeholder="请填写取消订单的缘由"
clear="w300"
v-model="cancelRemark"
></el-input>
<el-row :gutter="20" style="margin-top: 20px;">
<el-col :span="24" style="text-align: right;">
<input
type="button"
class="normalBtn"
value="取消订单"
@click="cancelOrderHandler"
/>
<input
type="button"
class="hollowFixedBtn"
value="关闭"
@click="cancelOrderDialog = false"
/>
</el-col>
</el-row>
</div>
</el-dialog>
<offset :isShow="cdState" :obj="queryObj" @close="cdState=false"></offset>
</div>
</template>
<script>
import offset from '../../public/offset.vue';
export default {
components: { offset },
props: ["OrderList","pagesTitle"],
data() {
return {
queryObj:null,
cdState: false,
copyId: 0,
loading0: false,
loading1: false,
loading2: false,
loading3: false,
BillMakingMsg: {
// PeroidsId: null,
// Type: null,
// EmpIds:'',
OtherType: 61,
ReFinanceId: "",
ReFinanceId2: ""
},
userInfo: {},
msg: {
OrderId: "",
LossMoney: 0,
State: '',//状态 1确认 2已邮寄 3设置自提 4收损
SelffetchAddress: ''
},
msgParameter: {
IsUpdateMailing: 1,
OrderId: 0,
Money: 0.0,
Remark: '',
MailingState: '1',//邮寄状态 1自取 2邮寄
MailingAddress: '',//MailingState =2 填写邮寄
UseDate:'',//门票日期
Name:'',
EName:'',
Sex: '1',//1男2女
Birthday: '',
Mobile:'',
CouponsId:'',//景点id
DetailList:[],
},
rules2:{
Name: [{
required: true,
message: '请输入中文名',
trigger: 'blur'
}],
EName: [{
required: true,
message: '请输入英文名',
trigger: 'blur'
}],
Mobile: [
{ required: true, message: "请输入联系电话", trigger: "blur" },
{
pattern: this.$commonUtils.Regex.el_ISphone,
message: "请输入正确的电话"
}
],
MailingAddress: [{
required: true,
message: '请输入邮寄地址',
trigger: 'blur'
}],
},
outerVisible: false,
rules: {
State: [
{
required: true,
message: "请选择订单状态",
trigger: "change"
}
],
SelffetchAddress: [
{
required: true,
message: "请输入自提地址",
trigger: "blur"
}
],
LossMoney: [
{
required: true,
message: "请输入收损金额",
trigger: "blur"
}
]
},
cancelOrderDialog: false,
cancelRemark: "",
cancelOrderId:0,
uploadOrderId: 0,
loading: false,
fileList:[],
GuestFile: '',
ChangeOrderDialog: false,
OrderStatusType:[
{Name: this.$t('OrderList.orderStatus.apply'),ID:'1'},
{Name: this.$t('OrderList.orderStatus.check'),ID:'2'},
{Name: this.$t('OrderList.orderStatus.cancel'),ID:'3'},
{Name: this.$t('OrderList.orderStatus.sun'),ID:'4'},
],
items: null,
typeState: '',
Title: ''
};
},
watch: {
pagesTitle(val,oldval){
this.Title = val
},
OrderList:{
handler(val, oldVal){
}
}
},
methods: {
// 签证状态
AmendVisa(){
},
// 签证
CheckOutDetails(){
},
// 提成
commissionDetails(){
},
// 修改订单状态
modifyStatus(row){
},
// 查看出票状态
viewCredentials(item){
},
isOffset(row, index, num){
this.makeAdocument(row, index, num,'Offset')
setTimeout(()=>{
this.cdState = true
},100)
},
submit2(){
if(this.loading3) return
this.$refs['msgParameter'].validate((valid) => {
if (valid) {
this.setFormMsg2()
} else {
return false;
}
});
},
setFormMsg2(){
if(this.msgParameter.MailingState=='1'){
this.msgParameter.MailingAddress = ''
}
let m = {
IsUpdateMailing: 1,
OrderId: this.msgParameter.OrderId,
CouponsId: this.msgParameter.CouponsId,
Money: this.msgParameter.Money,
UseDate: this.msgParameter.UseDate,
Birthday: this.msgParameter.Birthday,
DetailList: this.msgParameter.DetailList,
MailingState: this.msgParameter.MailingState,//邮寄状态 1自取 2邮寄
MailingAddress: this.msgParameter.MailingAddress,//MailingState =2 填写邮寄
Name: this.msgParameter.Name,
EName: this.msgParameter.EName,
Sex: this.msgParameter.Sex,//1男2女
Mobile: this.msgParameter.Mobile,
Remark: this.msgParameter.Remark,
}
this.loading3 = true
this.apipost("ticket_post_SetSaleTicketOrder", m,
res => {
this.loading3 = false
if (res.data.resultCode == 1) {
this.Success('变更成功');
this.$emit('success')
this.ChangeOrderDialog = false
} else {
this.Error('变更失败')
}
},
err => {
this.loading3 = false
this.Error(err.message)
});
},
uploadFileBtn(file){
let ft = file.file.name.substring(file.file.name.lastIndexOf('.') + 1, file.file.name.length).toUpperCase();
let typeOk = false;
let FileName = file.file.name.substring(0,file.file.name.lastIndexOf("."))
let newArr = [];
newArr.push(file.file)
let path = "/Upload/Temporary/"
this.$message.info(this.$t('tips.shangchuanzhong'))
this.UploadSelfFileT(path, newArr, x => {
this.GuestFile = this.domainManager().ViittoFileUrl + x.data.FilePath
this.uploadHandleChange()
}, 1);
},
// 上传旅客名单
uploadHandleChange(){
if(this.loading) return
let msg = {
OrderId: this.uploadOrderId,
GuestFileList: [this.GuestFile]
}
this.loading = true
this.apipost(
"dict_post_SetSaleOrderGuestFile",msg,
res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.uploadOrderId=0
this.GuestFile=''
this.$emit("success");
} else {
this.Error(res.data.message);
}
},
err => {
this.loading = false;
}
);
},
// 单据详情
openDetails(item) {
let query = {
id: item.FrID
};
this.$router.push({
path: "/FinancialDocumentsDetail",
query
});
},
// 制作单据
makeAdocument(row, index, num, Offset) {
let type = 0
if(num==3){
type = 2
}else{
type = num
}
this.BillMakingMsg.ReFinanceId = row.OrderId;
this.BillMakingMsg.ReFinanceId2 = num;
this.BillMakingMsg.OtherType = 67;
let text = "";
let query = {};
if (num == 1) {
text = "收款";
} else if (num == 2) {
text = "付款";
} else if (num == 3) {
text = "成本";
}
query = {
blank: "y",
tab: `新增${text}单据`,
Type: type,
tradeObj: JSON.stringify(this.BillMakingMsg)
};
this.queryObj = query
if(!Offset){
this.$store.commit("ChoiceAddFinancialDocuments");
this.$router.push({
path: "/ChoiceAddFinancialDocuments",
query
});
}
},
// 订单明细
goRoomDetails(obj, title) {
var path
if(title==='订房详情'){
path = "roomReservationsDetails";
if (this.userInfo.RB_Group_id == 91) {
path = "roomReservationsDetails_swt";
}
this.$router.push({
name: path,
query: {
id: obj.OrderId,
OrderType: 1,
blank: "y",
tab: title
}
});
}else{//变更预定
this.$router.push({
name: 'CharterPreview',
query: {
OrderId: obj.OrderId,
id: obj.ProductId,
blank: "y",
tab: title
}
});
}
},
clickRightButtom(item, type) {
// 0取消订单 1确认订单 2收损
this.msg.OrderId = item.OrderId;
this.msg.SelffetchAddress = item.SelffetchAddress
this.items = item
this.typeState = type
if (type == 0) {
if (!this.loading0) {
this.cancelOrderId = item.OrderId
// 销售 OP
if(this.Title!='销售'){
this.cancelOrderDialog = true;
}else{
let that = this
that.$confirm(`是否确定取消订单?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.cancelOrderHandler()
}).catch(err=>{
this.loading0= false
})
}
}
} else if (type == 1) {
if (!this.loading1) {
this.confirmFun(item, type);
}
}else if (type == 2) {
if (!this.loading2) {
this.outerVisible = true;
this.msg.LossMoney = item.LossMoney ? item.LossMoney : 0;
}
}
},
// 销售取消订单
cancelOrder() {
let that = this
if (this.loading0) return;
that.$confirm(`是否确定取消订单?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.loading0 = true
this.apipost("ticket_post_CancelSaleTicketOrder", {
OrderId: this.cancelOrderId,
IsOPCancel: this.Title!='销售'?1:0,
Remark: this.cancelRemark
},
res => {
this.loading0= false
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.$emit("success");
} else {
this.Error(res.data.message);
}
}).catch(err=>{
this.loading0= false
})
}).catch(()=>{
this.loading0 = false
})
},
//提交
submitForm(msg) {
//提交创建、修改表单
this.$refs[msg].validate(valid => {
if (valid) {
if (!this.loading2) {
this.saveUpdate();
}
} else {
// this.Error("请完成必填项");
return false;
}
});
},
cancelOrderHandler() {
if (this.cancelRemark == ""&&this.Title!='销售') {
this.Error("请填写取消订单的缘由");
return;
}
if (this.loading0) return;
this.loading0 = true
this.apipost(
"CarSingle_post_CancelSaleCarOrder",
{
OrderId: this.cancelOrderId,
IsOPCancel: this.Title!='销售'?1:0,
Remark: this.Title!='销售'?this.cancelRemark:''
},
res => {
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.cancelOrderDialog=false
this.cancelOrderId=0
this.cancelRemark=''
this.$emit("success");
} else {
this.Error(res.data.message);
}
this.loading0 = false;
},
err => {
this.loading0 = false;
}
);
},
saveUpdate() {
let text = '是否确认设置收损?'
this.$confirm(text, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.loading2 = true;
this.apipost(
"CarSingle_post_SetAdminCarOrderState",
{
OrderId: this.msg.OrderId,
State: this.typeState,
LossMoney: this.msg.LossMoney,
},
res => {
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.$emit("success");
} else {
this.Error(res.data.message);
}
this.loading2 = false;
this.outerVisible = false;
},
err => {
(this.loading2 = false), (this.outerVisible = false);
}
);
})
.catch(() => {});
},
confirmFun(item,type) {
let text = '是否确认订单?'
this.$confirm(text, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
this.loading1 = true;
this.apipost(
"CarSingle_post_SetAdminCarOrderState",
{
OrderId: item.OrderId,
State: type,
LossMoney: type==2?this.msg.LossMoney:'',
},
res => {
if (res.data.resultCode == 1) {
this.Success(res.data.message);
this.$emit("success");
} else {
this.Error(res.data.message);
}
this.loading1 = false;
},
err => {
this.loading1 = false;
}
);
})
.catch(() => {
this.$message.info("已取消!");
});
},
//复制信息
CopyHandler(item) {
this.copyId = item.OrderId;
setTimeout(() => {
this.copyId = 0;
}, 2000);
},
setEdate() {
return this.addMoth(new Date().Format("yyyy-MM-dd"), 1);
},
addMoth(d, m) {
let ds = d.split("-"),
_d = ds[2] - 0;
let nextM = new Date(ds[0], ds[1] - 1 + m + 1, 0);
let max = nextM.getDate();
d = new Date(ds[0], ds[1] - 1 + m, _d > max ? max : _d);
return d
.toLocaleDateString()
.match(/\d+/g)
.join("-");
},
com_onresize() {
//clientHeight的值由DIV内容的实际高度和CSS中的padding值决定,
var contentsHeight = document.body.clientHeight;
var h = contentsHeight - 50 - 180 - 40;
if (h < 110) {
return;
}
//设置table的行高
// this.tableHeight = h;
}
},
mounted() {
this.userInfo = this.getLocalStorage();
//自适应高度调节
this.com_onresize();
window.onresize = () => {
this.com_onresize();
};
}
};
</script>
<style></style>
\ No newline at end of file
<style scoped>
.groupTourOrderByTuan_ico{
margin-left: 5px;
}
.groupTourOrderByTuan_ico>i{
display: inline-block;
margin: 0 5px 0 0;
width: 8px;
height: 8px;
border-radius: 2px;
vertical-align: middle;
}
.HotelWorkList .has-gutter tr th,
.el-table th.is-leaf {
background-color: #EAEAEA !important;
}
.HotelWorkList .HW_hotelDialog {
width: 900px;
}
.HotelWorkList .Hw_tableOne {
width: 100%;
height: 40px;
background-color: #EAEAEA;
}
.HotelWorkList .Hw_tableOne th {
text-align: center;
}
.HotelWorkList .HotelWorkInput .el-input {
width: 223px;
}
.HotelWorkList .HworkInput .el-input {
width: 210px;
}
/deep/.query-box li span>em{
min-width: 60px;
}
</style>
<template>
<div class="HotelWorkList">
<div class="query-box HotelWorkInput" style="border-bottom: none;">
<ul>
<li>
<span>
<em>{{$t('OrderList.search.status')}}</em>
<el-select v-model="msg.OrderStatus" class="w200 HworkInput">
<el-option :key="0" :value="0" :label="$t('OrderList.orderStatus.normal')"></el-option>
<el-option v-for="item in OrderStatusType" :key="item.ID" :label="item.Name" :value="item.ID"></el-option>
</el-select>
</span>
</li>
<li v-if="Title!='销售'">
<span>
<em>业务员</em>
<el-select filterable v-model='msg.EnterID' class="w200">
<el-option :value="0" label="不限"></el-option>
<el-option v-for='item in EmployeeList'
:label='item.EmName'
:value='item.EmployeeId'
:key='item.EmployeeId'>
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>{{$t('OrderList.search.orderNum')}}</em>
<el-input clearable type="Number" v-model="msg.OrderNo" :placeholder="$t('OrderList.search.orderNum')" class="w200"/>
</span>
</li>
<!-- <li>
<span><em>订单ID</em>
<el-input clearable type="Number" v-model="msg.OrderId" placeholder="订单ID" class="w200"/>
</span>
</li> -->
<!-- <li>
<span><em>电话</em>
<el-input clearable v-model="msg.Mobile" placeholder="电话" class="w200"/>
</span>
</li> -->
<li>
<span><em>客人姓名</em>
<el-input clearable v-model="msg.GuestName" placeholder="客人姓名" class="w200"/>
</span>
</li>
<li>
<span>
<em>完结时间</em>
<el-date-picker
style="height: 34px;"
value-format="yyyy-MM-dd"
v-model="Datelist"
type="daterange"
:range-separator="$t('OrderList.zhi')"
:start-placeholder="$t('OrderList.star')"
:end-placeholder="$t('OrderList.end')" @change="getDates">
</el-date-picker>
</span>
</li>
<li>
<span>
<em>出发时间</em>
<el-date-picker
style="height: 34px;"
value-format="yyyy-MM-dd"
v-model="DatelistUse"
type="daterange"
:range-separator="$t('OrderList.zhi')"
:start-placeholder="$t('OrderList.star')"
:end-placeholder="$t('OrderList.end')" @change="getDatesUse">
</el-date-picker>
</span>
</li>
<li>
<input type="button" class="normalBtn" :value="$t('pub.searchBtn')" @click="msg.pageIndex=1,currentPage=1,GetList()" />
</li>
</ul>
</div>
<template>
<div style="display: flex;justify-content: end;margin-bottom: 10px;">
<p><span class="groupTourOrderByTuan_ico"><i style="background-color:#3FC4FF"></i><span>{{$t('fnc.yidadan')}}</span></span>
<span class="groupTourOrderByTuan_ico"><i style="background-color:#F1416C"></i><span>{{$t('fnc.yhcnyshenhe')}}</span></span>
<span class="groupTourOrderByTuan_ico"><i style="background-color:#ff9800"></i><span>{{$t('fnc.ytongguo')}}</span></span></p>
</div>
<OrderList :pagesTitle="Title" :OrderList="OrderList" v-loading="loading" @success="msg.pageIndex=1,GetList()"> </OrderList>
<div v-if="OrderList&&OrderList.length==0" style="text-align: center;padding: 100px;">暂无数据</div>
<el-pagination v-if="OrderList&&OrderList.length>0" background @current-change="handleCurrentChange" :current-page.sync="currentPage" layout="total,prev, pager, next, jumper" :page-size=msg.pageSize :total=total>
</el-pagination>
</template>
</div>
</template>
<script>
import OrderList from './OrderList.vue';
export default {
props:['pagesTitle','dataObj'],
components: { OrderList },
data() {
return {
MultipleChoiceList: [ //多选项目
{
Name: '机票',
Id: '1'
}, {
Name: '签证',
Id: '2'
}, {
Name: '地接',
Id: '3'
}, {
Name: '套餐',
Id: '4'
}, {
Name: '其他',
Id: '5'
}
],
userInfo: {},
HotelList: [],
loading: false,
isShow: false,
outerVisible: false,
//订单列表
OrderList: [],
//默认高度
tableHeight: 0,
msg:{
// pageIndex: 1,
// pageSize: 5,
// OrderType: '1',
// OrderId: '',
// OrderNo: '',
// SurName: '',
// Name: '',
// OrderStatus: 0,
// StartTime: '',
// EndTime: '',
// OrderSTime: '',
// OrderETime: '',
// ProductName: '',
// Mobile: '',//电话
// IsSelectSale: 1,
// EnterID: 0,//业务员
pageIndex: 1,
pageSize: 15,
OrderId: "", //订单id
GuestName: "", //客人姓名
GuestId: "", //客人id
StartCityName: "", //出发城市
EndCityName: "", //到达城市
EnterID: "", //业务员id
TicketStatus: "0", //出票状态
VisaStatus: "0", //出签状态
OrderStatus: "0", //订单状态
Q_IsCollect: "0", //收款状态
StartTime: "",
EndTime: "",
IsMyOrder: "1", //我的订单
FinishSTime: "",//完结开始时间
FinishETime: "",//完结结束时间
DepartSTime: "",//出发开始
DepartETime: "",//出发结束
},
total: 0,
currentPage: 1,
OrderStatusType:[
{Name: this.$t('OrderList.orderStatus.apply'),ID:'1'},
{Name: this.$t('OrderList.orderStatus.check'),ID:'2'},
{Name: this.$t('OrderList.orderStatus.cancel'),ID:'3'},
{Name: this.$t('OrderList.orderStatus.sun'),ID:'4'},
],
OrderStateType:[
{Name: '接机',ID:'1'},
{Name: '送机',ID:'2'},
{Name: '包车',ID:'3'},
],
orderType:[
{Name: this.$t('OrderList.orderType.tour'),ID:'1'},
{Name: this.$t('OrderList.orderType.guest'),ID:'2'},
],
Datelist:'',
DatelistUse:'',
Title:'',
EmployeeList:[],
employeeMsg:{ // 员工
GroupId:'',
BranchId:-1,
DepartmentId:0,
PostId:0,
IsLeave:0,
},
};
},
watch: {
pagesTitle(val,oldval){
this.Title = val
},
dataObj:{
handler(val, oldVal) {
this.msg.OrderType = val.tab
this.msg.OrderId = val.OrderId
this.GetList()
},
deep: true,
}
},
methods: {
getEmployee() { //员工
this.apipost('admin_get_EmployeeGetList', this.employeeMsg, res => {
if(res.data.resultCode == 1) {
this.EmployeeList = res.data.data;
}
}, err => {})
},
getDatesUse(){
if(this.Datelist){
this.msg.DepartSTime = this.Datelist[0]
this.msg.DepartETime = this.Datelist[1]
}if(!this.Datelist){
this.msg.DepartSTime = ''
this.msg.DepartETime = ''
}
},
getDates(){
if(this.DatelistUse){
this.msg.FinishSTime = this.Datelist[0]
this.msg.FinishETime = this.Datelist[1]
}if(!this.DatelistUse){
this.msg.FinishSTime = ''
this.msg.FinishETime = ''
}
},
setEdate() {
return this.addMoth(new Date().Format("yyyy-MM-dd"), 1)
},
addMoth(d, m) {
let ds = d.split('-'),
_d = ds[2] - 0;
let nextM = new Date(ds[0], ds[1] - 1 + m + 1, 0);
let max = nextM.getDate();
d = new Date(ds[0], ds[1] - 1 + m, _d > max ? max : _d);
return d.toLocaleDateString().match(/\d+/g).join('-')
},
getyMDOne(){
let myDate = new Date()
let myYear = myDate.getFullYear();//获取完整的年份(4位,1970-????)
let myMonth = myDate.getMonth()+ 1;//获取当前月份(0-11,8代表1月)
let myToday = myDate.getDate(); //获取当前日(1-31)
myMonth = myMonth > 9 ? myMonth : '0'+ myMonth
myToday = myToday > 9 ? myToday : '0'+ myToday
let nowDate = myYear +'-'+ myMonth +'-01'
return nowDate
},
getyMDTwo(){
let myDate = new Date()
let myYear = myDate.getFullYear();//获取完整的年份(4位,1970-????)
let myMonth = myDate.getMonth()+ 1;//获取当前月份(0-11,8代表1月)
let myToday = myDate.getDate(); //获取当前日(1-31)
myMonth = myMonth > 9 ? myMonth : '0'+ myMonth
myToday = myToday > 9 ? myToday : '0'+ myToday
let nowDate = myYear +'-'+ myMonth +'-'+ myToday
return nowDate
},
//获取酒店订单列表
GetList() {
this.loading = true
let url
// 销售 OP
if(this.pagesTitle=='销售'){
url = "/api/Order/GetGuestOrderStatisticsPageList"
}else{
// url = "CarSingle_post_GetAdminCarOrderPageList"
}
this.crmapipost(url, this.msg,
res => {
if (res.data.resultCode == 1) {
// console.log(res.data,'-----')
let data = res.data.data.Data.pageData
let addList = function(arr) {
arr.forEach((item) => {
item.More = "";
item.actuallyReceived = false;
item.cost = false;
item.selectedType = "";
item.checkList = [];
item.MultipleChoiceList = [];
item.MoreList = [
{
Name: "取消订单",
Id: "1",
show:
item.OrderStatus != 2 &&
item.OrderStatus != 5 &&
item.OrderStatus != 6
? true
: false,
},
{
Name: "订单转交",
Id: "2",
show: true,
},
{
Name: "修改订单金额",
Id: "3",
show:
item.OrderStatus != 2 &&
item.OrderStatus != 5 &&
item.OrderStatus != 6 &&
(item.TicketStatus == 1 || item.VisaStatus == 1)
? true
: false,
},
{
Name: "修改出票状态",
Id: "4",
show:
item.OrderStatus != 2 &&
item.OrderStatus != 5 &&
item.OrderStatus != 6 &&
item.TicketStatus < 3
? true
: false,
},
{
Name: "修改出签状态",
Id: "5",
show:
item.OrderStatus != 2 &&
item.OrderStatus != 5 &&
item.OrderStatus != 6 &&
item.VisaStatus == 1
? true
: false,
},
{
Name: "订单收损",
Id: "8",
show:
item.OrderStatus != 2 &&
item.OrderStatus != 6
? true
: false,
},
{
Name: "收损完结",
Id: "9",
show:
(item.OrderStatus == 3 || item.OrderStatus == 4) &&
item.DueinMoney == 0
? true
: false,
},
{
Name: '订单完结',
Id: '6',
show: item.OrderStatus == 1 && item.DueinMoney == 0 ?
true : false
},
{
Name: "操作日志",
Id: "7",
show: true,
},
{
Name: "修改日期",
Id: "10",
show: item.OrderType&&item.OrderType.indexOf(1) != -1?true:false,
}
];
});
};
addList(data);
data.forEach((item) => {
if (item.OrderType) {
let list = item.OrderType && item.OrderType.split(",");
for (let j = 0; j < list.length; j++) {
for (let i = 0; i < this.MultipleChoiceList.length; i++) {
if (list[j] == this.MultipleChoiceList[i].Id) {
item.MultipleChoiceList.push(
JSON.parse(JSON.stringify(this.MultipleChoiceList[i]))
);
}
}
}
}
if (item.LossList.length > 0) {
for (let i = 0; i < item.LossList.length; i++) {
for (let j = 0; j < item.MultipleChoiceList.length; j++) {
if (
item.LossList[i].OrderType ==
item.MultipleChoiceList[j].Id
) {
item.MultipleChoiceList[j].show = true;
}
}
}
}
});
this.OrderList = res.data.data.Data.pageData;
this.total = res.data.data.Data.count;
}else {
this.Error(res.data.message);
}
this.loading = false
},
err => {this.loading = false}
);
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.GetList();
},
com_onresize() {
//clientHeight的值由DIV内容的实际高度和CSS中的padding值决定,
var contentsHeight = document.body.clientHeight;
var h = contentsHeight - 50 - 180 - 40;
if (h < 110) {
return;
}
//设置table的行高
this.tableHeight = h;
},
},
created() {
if(this.$route.query.OrderId){
this.msg.OrderId=this.$route.query.OrderId
}
let userInfo=this.getLocalStorage();
this.employeeMsg.GroupId = userInfo.RB_Group_id; //集团ID
// this.msg.EnterID = userInfo.EmployeeId;
},
mounted() {
this.Title = this.pagesTitle
if(this.Title!='销售'){
this.getEmployee()
}
this.Datelist = this.getyMDOne()
this.userInfo = this.getLocalStorage();
this.GetList();
//自适应高度调节
this.com_onresize();
window.onresize = () => {
this.com_onresize();
}
},
};
</script>
<style>
</style>
\ No newline at end of file
......@@ -305,6 +305,10 @@
<div class="list-left">
<h6 @click="showCardHandler">{{detailsObj.Name}}</h6>
<p style="color: #9e9e9e;font-size: 13px;">请在出发前一天的23:00前完成预定</p>
<div v-if="crmOrderObj">
<span style="color: red;">引流人:{{crmOrderObj.LureEmpNmae}} </span>
<span style="color: #2AAEF2;">/客人:{{crmOrderObj.CRMGuestName}}</span>
</div>
<!-- <div>
<span>地址: {{detailsObj.CityList2[0].CountryName }}{{detailsObj.CityList2[0].CityName}}</span>
<a @click="showCardHandler"><i class="el-icon-map-location"></i> 地图</a>
......@@ -438,8 +442,8 @@
placeholder="请输入上车地点">
</el-input>
<span @click="clickMapAddress(1,1,msg.GetonAddress)"
class="el-icon-location" style="font-size: 16px;color: #E95252;position: absolute;right: 10px;top: 15px;"></span>
<!-- <span @click="clickMapAddress(1,1,msg.GetonAddress)"
class="el-icon-location" style="font-size: 16px;color: #E95252;position: absolute;right: 10px;top: 15px;"></span> -->
</el-form-item>
</li>
<li v-if="msg.OrderType!=2">
......@@ -637,6 +641,8 @@
Mobile:'',//电话
ProductId: '',
CarId: '',//产品类型ID
LureEmpId: 0,
CRMGuestId: 0,
},
types: [],
isCheck: false,
......@@ -712,7 +718,8 @@
}
],
},
detailsRow: null
detailsRow: null,
crmOrderObj: null
};
},
methods: {
......@@ -980,7 +987,12 @@
},
mounted() {
// crm自动登陆传过来的参数
if(this.$route.query.crmOrderObj){
this.crmOrderObj = JSON.parse(this.$route.query.crmOrderObj)
this.msg.LureEmpId = this.crmOrderObj.LureEmpId//引流id
this.msg.CRMGuestId = this.crmOrderObj.CRMGuestId //客人ID
}
},
created() {
this.msg.OrderId = this.$route.query.OrderId
......
......@@ -284,6 +284,10 @@
<div class="listone-list">
<div class="list-left">
<p style="color: #9e9e9e;font-size: 13px;">请在出发前一天的23:00前完成预定</p>
<div v-if="crmOrderObj">
<span style="color: red;">引流人:{{crmOrderObj.LureEmpNmae}} </span>
<span style="color: #2AAEF2;">/客人:{{crmOrderObj.CRMGuestName}}</span>
</div>
</div>
</div>
</div>
......@@ -500,7 +504,9 @@
// UseType: null,//用车类型(接口返下拉列表)
// TripInfo: "",//行程信息
// }
]
],
LureEmpId: 0,
CRMGuestId: 0,
},
types: [],
isCheck: false,
......@@ -584,7 +590,8 @@
},
vehicletop: [],
listvehicle: [],
SeatNum:0
SeatNum:0,
crmOrderObj: null,
};
},
methods: {
......@@ -801,6 +808,12 @@
},
mounted() {
// crm自动登陆传过来的参数
if(this.$route.query.crmOrderObj){
this.crmOrderObj = JSON.parse(this.$route.query.crmOrderObj)
this.msg.LureEmpId = this.crmOrderObj.LureEmpId//引流id
this.msg.CRMGuestId = this.crmOrderObj.CRMGuestId //客人ID
}
let userInfo = this.getLocalStorage();
this.msg.UseCompName = userInfo.GroupName
this.msg.UseName = userInfo.emName
......
......@@ -314,6 +314,7 @@
},
detailsObj:{},
showDetails: false,
crmOrderObj: null
};
},
watch: {
......@@ -334,6 +335,7 @@
name: 'CharterAddEditVehicle',
query: {
blank: "y",
crmOrderObj: this.crmOrderObj?this.crmOrderObj:null,
tab: "新增团订"
}
});
......@@ -344,6 +346,7 @@
query: {
id: id,
OrderDate: this.FormartDate(new Date(this.msg.Q_Date)),
crmOrderObj: this.crmOrderObj?this.crmOrderObj:null,
blank: "y",
tab: "订单预览"
}
......@@ -445,7 +448,10 @@
},
mounted() {
// crm自动登陆传过来的参数
if(this.$route.query.crmOrderObj){
this.crmOrderObj = this.$route.query.crmOrderObj
}
},
created() {
this.getProvinceList();
......
......@@ -279,6 +279,10 @@
<div class="list-left">
<h6 @click="showCardHandler">{{detailsObj.Name}}</h6>
<p style="color: #9e9e9e;font-size: 13px;">请在游玩前一天的23:00前完成预定</p>
<div v-if="crmOrderObj">
<span style="color: red;">引流人:{{crmOrderObj.LureEmpNmae}} </span>
<span style="color: #2AAEF2;">/客人:{{crmOrderObj.CRMGuestName}}</span>
</div>
<!-- <div>
<span>地址: {{detailsObj.CityName}} {{detailsObj.Address}}</span>
<a @click="showCardHandler"><i class="el-icon-map-location"></i> 地图</a>
......@@ -480,6 +484,8 @@
Mobile:'',
CouponsId:'',//景点id
DetailList:[],
LureEmpId: 0,
CRMGuestId: 0,
},
types: [],
isCheck: false,
......@@ -515,7 +521,8 @@
trigger: 'blur'
}],
},
detailsRow: null
detailsRow: null,
crmOrderObj: null
};
},
methods: {
......@@ -682,7 +689,12 @@
},
mounted() {
// crm自动登陆传过来的参数
if(this.$route.query.crmOrderObj){
this.crmOrderObj = JSON.parse(this.$route.query.crmOrderObj)
this.msg.LureEmpId = this.crmOrderObj.LureEmpId
this.msg.CRMGuestId = this.crmOrderObj.CRMGuestId
}
},
created() {
this.msg.CouponsId = this.$route.query.id
......
......@@ -150,7 +150,7 @@
<div class="flexOne domesticScenic">
<div class="query-box">
<ul>
<li>
<!-- <li>
<span>
<em>{{ $t('system.quety_area') }}</em>
<el-select v-model="msg.QProvince" filterable @change="getProvinceList(msg.QProvince, 2)"
......@@ -163,7 +163,7 @@
<el-option v-for="item in cityList" :key="item.ID" :label="item.Name" :value="item.ID"></el-option>
</el-select>
</span>
</li>
</li> -->
<li><span><em>日期</em>
<el-date-picker v-model='msg.OpenTime' format="yyyy-MM-dd" value-format="yyyy-MM-dd" type="date"
:picker-options="beforeCheck" laceholder="门票日期">
......@@ -294,7 +294,7 @@ export default {
msg: {
pageIndex: 1,
pageSize: 16,
QCountry: '651',
QCountry: '0',//651
QProvince: 0,
QCity: 0,
QDistrict: 0,
......@@ -312,6 +312,7 @@ export default {
},
detailsObj: {},
showDetails: false,
crmOrderObj: null,
};
},
watch: {
......@@ -333,6 +334,7 @@ export default {
query: {
id: id,
OpenTime: this.FormartDate(new Date(this.msg.OpenTime)),
crmOrderObj: this.crmOrderObj?this.crmOrderObj:null,
blank: "y",
tab: "订单预览"
}
......@@ -427,7 +429,10 @@ export default {
},
mounted() {
// crm自动登陆传过来的参数
if(this.$route.query.crmOrderObj){
this.crmOrderObj = this.$route.query.crmOrderObj
}
},
created() {
this.getProvinceList("651", 1);
......
......@@ -2110,6 +2110,14 @@ export default {
title: '用车订单'
},
},
{
path: '/CRMTicketOrder', //crm单项机票订单
name: 'CRMTicketOrder',
component: resolve => require(['@/components/SingleAirTicket/TicketOrder'], resolve),
meta: {
title: '单机票订单'
},
},
{
path: '/CharterAddEditVehicle', //新增/编辑团订
name: 'CharterAddEditVehicle',
......@@ -2229,7 +2237,8 @@ export default {
meta: {
title: '签证已确认'
},
}, {
},
{
path: '/TravelManager', //团控配置
name: 'TravelManager',
component: resolve => require(['@/components/TravelManager/TravelGroupControl/TravelManager'], resolve),
......@@ -2319,13 +2328,6 @@ export default {
meta: {
title: '在线申请'
},
}, {
path: '/airplaneOrder', //订单列表
name: 'airplaneOrder',
component: resolve => require(['@/components/TravelManager/TravelTeam/orderInfo'], resolve),
meta: {
title: '订单列表'
},
}, {
path: '/TravelSupplier', //供应商列表
name: 'TravelSupplier',
......
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