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