Commit b39bf65d authored by 吴春's avatar 吴春

机损核实页面提交

parent ce7a3ff0
<style>
@import "../../../assets/css/newTravelManager.css";
.people-item {
margin-top: 5px;
font-size: 14px;
}
.people-item-title {
font-size: 12px;
color: #666;
margin-right: 4px;
}
.productQueryList {
width: 100%;
min-width: 1366px;
padding-left: 10px;
}
.productQueryList li {
width: 100%;
border: 1px solid #e5e5e5;
background: #fff;
margin-bottom: 10px;
color: #333;
font-size: 14px;
}
.productQueryList li::after {
content: "";
display: block;
clear: both;
}
.productQueryList li i.iconfont {
color: #bbb;
margin-right: 8px;
}
.productQueryList li>div:first-child {
display: table;
width: 100%;
}
.productQueryList li>div>div {
display: table-cell;
border-right: 1px dashed #dcdfe6;
}
.productQueryList li>div>div:last-child {
border-right: none;
}
.productQueryList li .d11 {
float: left;
width: 160px;
height: 120px;
margin: 14px 14px 0 14px;
}
.productQueryList li .d11>li {
width: 160px;
height: 120px;
border: none;
}
.productQueryList li .d11>li>img {
width: 160px;
height: 120px;
}
.productQueryList li .d12 {
float: left;
padding-top: 18px;
width: 200px;
}
.productQueryList li .d12 .d12p {
font-size: 14px;
cursor: pointer;
max-height: 60px;
line-height: 20px;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
.productQueryList li .d12 .d12p:hover {
text-decoration: underline;
color: #333;
}
.productQueryList li .d12 .d12TC {
margin: 5px 0;
color: #666666;
font-size: 12px;
}
.productQueryList li .d1 {
width: 18%;
position: relative;
padding: 0 20px;
}
.productQueryList li .d2 {
width: 14%;
text-align: center;
padding-top: 20px;
}
.productQueryList li .d2 p.flightNo {
background: #ccc;
width: 136px;
margin: 5px 0;
padding: 0 10px;
height: 22px;
line-height: 22px;
display: inline-block;
font-size: 14px;
}
.productQueryList li .d2 p.flightNo em {
font-style: normal;
color: #333;
font-size: 12px;
font-weight: bold;
}
.productQueryList li .d2 p.flightNo .flem {
height: 22px;
width: 50px;
display: inline-block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.productQueryList li .d2 p>span {
color: #fff;
font-size: 12px;
border-radius: 10px;
background: #2aaef2;
padding: 2px 5px;
cursor: pointer;
}
.productQueryList li .d2>div>div {
display: inline-block;
line-height: 24px;
font-size: 12px;
}
.productQueryList li .d3 {
width: 17%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d3 p {
line-height: 24px;
}
.productQueryList li .d3 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d3 p>em {
background: #ff9c00;
font-style: normal;
margin-left: 8px;
color: #fff;
border-radius: 4px;
padding: 2px 5px;
}
.productQueryList li .d4 {
width: 10%;
padding-left: 20px;
padding-top: 20px;
}
.productQueryList li .d4 p span.price {
color: #333;
text-decoration: underline;
font-size: 12px;
}
.productQueryList li .d4 p span.price:hover {
color: #e95252;
font-weight: bold;
cursor: pointer;
}
.productQueryList li .d5 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d5 p {
line-height: 26px;
}
.productQueryList li .d5 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d5 p>i {
font-weight: bold;
font-style: normal;
}
.productQueryList li .d8 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d8 p {
line-height: 26px;
}
.productQueryList li .d8 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d8 p>i {
font-style: normal;
}
.productQueryList li .d6 {
padding: 20px 40px;
width: 100%;
height: inherit;
border-top: 1px solid #e5e5e5;
}
.productQueryList li .d6 p {
display: table-cell;
color: #e95252;
}
.productQueryList li .d6 p:nth-child(1) {
width: 60px;
font-size: 12px;
}
.productQueryList li .d7 {
width: 10%;
min-width: 160px;
text-align: center;
padding: 40px 20px;
border-right: none;
}
.productQueryList li .d7 button {
width: 30px;
height: 30px;
border-radius: 4px;
}
.productQueryList li .d7 .el-button--primary {
padding: 5px;
margin: 0;
font-size: 14px !important;
color: #fff;
}
.productQueryList li .d7 i.iconfont {
color: #fff;
margin: 0;
}
.pro_tripDetails {
padding: 0;
box-shadow: 0px 1px 3px 0px #dedede;
max-height: 400px;
overflow-y: auto;
}
.pro_tripDetails .popper__arrow::after {
border-bottom-color: #ededed !important;
}
.pro_tripDetails table {
padding: 10px 0 0 20px;
background-color: #ededed;
border-collapse: collapse;
border: 1px solid #d2d2d2;
font-size: 12px;
}
.pro_tripDetails table th {
background-color: #ededed;
padding: 5px;
}
.pro_tripDetails table td {
background-color: #ffffff;
padding: 9px 15px;
color: #333333;
border: 1px solid #d2d2d2;
}
.pro_tripDetails table td._d_name {
background-color: #ededed;
}
.pro_tripDetails table ._color_666 {
color: #666666;
}
.pro_tripDetails table tr._color_666 th {
padding: 9px 15px;
}
.productQuerybottomLayer {
overflow: auto;
position: fixed;
/* max-height: 300px; */
z-index: 50;
bottom: 0;
left: 0;
border-top: 3px solid #38425d;
background-color: #ffffff;
padding: 10px 10px 0;
width: 100%;
}
.productQuerybottomLayer .el-form-item__label {
font-size: 12px !important;
}
.productQuerybottomLayer>p {
border-left: 3px solid #e95252;
text-indent: 15px;
height: 16px;
font-family: "PingFangSc-Fine";
font-size: 16px;
margin-bottom: 20px;
line-height: 14px;
color: #000;
}
.productQuerybottomLayer .el-input {
width: auto !important;
}
.productQueryList .disabledBtn {
background: #999 !important;
border-color: #999 !important;
}
.product_union {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union::after {
content: "联";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_union1 {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union1::after {
content: "内";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_warning {
position: absolute;
top: 0px;
right: 0px;
width: 0px;
height: 0px;
border-top: 10px solid red;
border-bottom: 10px solid transparent;
border-left: 10px solid transparent;
border-right: 10px solid red;
}
.product_warning::after {
content: "!";
position: absolute;
top: -12px;
right: -5px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.PQ_detail {
width: 100%;
border-collapse: collapse;
}
.PQ_detail tr th,
.v-table-title-cell {
background: #e6e6e6;
height: 40px;
font-size: 14px;
border-right: 1px solid #e6e6e6;
color: #333;
}
.PQ_detail tr {
background: #fff;
text-align: center;
height: 40px;
}
.PQ_detail tr td {
font-size: 12px;
border: 1px solid #e5e5e5;
}
.PQ_HotelPop {
overflow: auto;
max-height: 350px;
}
.PQ_HotelPop table td {
padding: 5px 0;
text-align: center;
}
.PQ_HotelPop table th {
text-align: center;
}
.productQuerybottomLayer .el-upload-list {
width: 200px;
}
.flex-center {
display: flex;
justify-content: center;
}
.line-down:hover {
text-decoration: underline;
color: #333;
}
.financiaUpload .el-upload-dragger{
margin-left:12px;
margin-top:15px;
width: 100px !important;
height:50px !important;
border:none;
}
.productQueryList ._show_img_box {
position: fixed;
background: rgba(0, 0, 0, .6);
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 999;
text-align: center;
overflow: auto;
}
.productQueryList Receipt_box {
padding: 15px;
color: #c94052;
width: 830px;
position: relative;
}
.productQueryList ._addUpload_box {
display: block;
margin-left:82px;
margin-top:-15px;
}
.productQueryList ._addUpload_box img {
width: 100%;
height: 100%;
}
.productQueryList ._addUpload_box>div {
float: left;
width: 138px;
height: 92px;
border: 1px dashed rgba(210, 210, 210, 1);
border-radius: 2px;
cursor: pointer;
margin-bottom: 10px;
padding: 5px;
margin-right: 10px;
position: relative;
}
.productQueryList ._addFile_name {
padding-left: 15px;
max-width: 450px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.productQueryList ._addUpload_box .icon-guanbi1 {
font-size: 12px;
color: white;
display: inline-block;
margin-left: 15px;
position: absolute;
right: -6px;
top: -9px;
background-color: #f56c6c;
border-radius: 50%;
height: 20px;
width: 20px;
text-align: center;
line-height: 20px;
}
.productQueryList ._addUpload_box .icon-guanbi1:hover {
font-size: 12px;
color: #c94052;
}
.productQueryList ._addUpload_box .icon-excel,
.productQueryList ._addUpload_box .icon-pdf {
text-align: center;
font-size: 38px;
color: green;
line-height: 75px;
}
</style>
<template>
<div class="productQueryList" v-loading="loading">
<ul v-if="list.length != 0">
<li v-for="(item, index) in list" :key="index">
<div class="dline">
<div class="d1" style="width:15%">
<div>
<p><i class="iconfont icon-biaoti1"></i> {{ item.LineName }}</p>
<p class="d12TC line-down" style="cursor: pointer" @click="goTeamBalancePayment('团队收支','TeamBalancePayment',item.TCID,item.OutBranchId)" >{{ item.TCNUM }}{{ item.TCID }}</p>
</div>
</div>
<div class="d1" style="width:15%">
<div> <span class="people-item-title">出团公司: </span>{{ item.OutBranchName }}</div>
<p class="people-item">
<span>{{ $t("Airticket.Air_StartTime") }}:</span>{{ item.StartDate }}
</p>
</div>
<div class="d12" style="float:inherit;padding-left:10px;" >
<div>
<el-tooltip class="item" effect="dark" :content="item.Title" placement="top-start"
popper-class="max-w250" style="text-overflow:ellipsis;">
<p class="d12p" :title="item.Title" @click="goUrlT('productQuery',item.TCNUM,'产品查询')">
{{ item.Title }}
</p>
</el-tooltip></div>
</div>
<div class="d4" style="width:13%">
<div class="people-item" >
<span class="people-item-title">团OP:</span>
{{ item.CreateName }}
</div>
<div class="people-item" >
<span class="people-item-title">结团状态:</span>
<span v-if="item.OutGroupAuditState==0">待申请</span>
<span v-else-if="item.OutGroupAuditState==1">待审核</span>
<span v-else-if="item.OutGroupAuditState==2">审核通过</span>
<span v-else-if="item.OutGroupAuditState==3">审核拒绝</span>
</div>
<div class="people-item" >
<span class="people-item-title">机票款:</span>
{{ item.JiPiao }}
</div>
</div>
<div class="d5" style="width:25%">
<div class="people-item" >
<span class="people-item-title">确认状态:</span>
<span v-if="item.TicketLoassId>0">已确认({{item.TicketLoassByStr}}/{{item.TicketLoassTimeStr}} )</span>
<span style="color:red;" v-else>未确认</span>
</div>
<div class="people-item" >
<span class="people-item-title" v-if="item.Notes==''">备注:</span>
<el-tooltip class="item" effect="dark" :content="item.Notes" v-else placement="top-start"
popper-class="max-w250" style="text-overflow:ellipsis;">
<span class="d12p" style="font-size: 12px;cursor: pointer;max-height: 20px;line-height: 20px;display: -webkit-box;overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp: 1; -webkit-box-orient: vertical" :title="item.Notes">
<span class="people-item-title">备注:</span> {{ item.Notes }}
</span>
</el-tooltip>
</div>
<div class="people-item" >
<span class="people-item-title">附件:</span>
<span style="text-decoration:underline;cursor:pointer;" @click="editItem(item,1)" v-if="item.FileList&&item.FileList.length>0">查看附件</span>
<span v-else="暂无"></span>
<!-- {{ item.FileList }} -->
</div>
</div>
<div style="width:5%">
<div class="flex-center">
<el-button v-if="item.TicketLoassId==0" type="primary" size="small" @click="editItem(item,0)">确认</el-button>
<el-button v-else type="primary" size="small" @click="editItem(item,0)">修改</el-button>
</div>
</div>
</div>
</li>
</ul>
<div class="noData" v-else>
{{ $t("system.content_noData") }}
</div>
<el-dialog :title='seeType==0?(queryData.Id==0?"确认":"修改"):"查看"' :visible.sync="showDialog" width="600px" height="50%">
<div v-if="seeType==0">
<span style="width: 15%; display: inline-block">团号:</span>
<span>{{ queryData.TCNUM }}{{ queryData.TCID }}</span>
</div>
<div style="margin-top: 10px" v-if="seeType==0">
<span style="width: 15%; display: inline-block">备注:</span>
<el-input v-model="queryData.Notes" style="width:425px;"></el-input>
</div>
<div style="margin-top: 10px">
<span style="width: 15%; display: inline-block">附件:</span>
<div class="_addUpload_box clearfix">
<template v-for="(file,fIndex) in saveMsg">
<div v-if="file.Type==3">
<div style="width:100%;height:100%;overflow: hidden;">
<el-image
style="width: 100%; height: 100%"
:src="file.Url?file.Url:file.Content"
:preview-src-list="images">
</el-image>
</div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)" v-if="seeType==0"></span>
</div>
<div v-if="file.Type==1">
<div class="iconfont"
:class="file.Content.substring(file.Content.lastIndexOf('.')+1,file.Content.length).toUpperCase()=='PDF'? 'icon-pdf' : 'icon-excel'"
@click="showUpLoadFile(file)"></div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)" v-if="seeType==0"></span>
</div>
<div v-if="file.Type==2">
<div class="iconfont icon-excel" @click="showUpLoadFile(file)"></div>
<span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)" v-if="seeType==0"></span>
</div>
</template>
<div class="_pic_upload financiaUpload" v-if="seeType==0">
<el-upload drag :http-request="uploadFileBtn" :multiple="true" :show-file-list="false" action>
<i class="el-icon-plus avatar-uploader-icon"></i>
<div class="el-upload__text">{{$t('active.ld_djscwj')}}</div>
</el-upload>
</div>
</div>
</div>
<span slot="footer" class="dialog-footer" v-if="seeType==0">
<el-button @click="cancelLoss()">取 消</el-button>
<el-button style="margin-right: 24px" type="primary" @click="submitOP">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
props: ["msg","loading", "list", "pagesTitle", "isVisa"],
data() {
return {
employeeMsg: { // 员工
GroupId: '',
BranchId: -1,
DepartmentId: 0,
PostId: 0,
IsLeave: 0,
},
loadingOP: false,
editNum: false,
showDialog: false,
queryData: {},
allCheck: false,
//当前登录用户信息
CurrentUserInfo: {},
travelControlTripLayerShow: false,
wxLoading: false,
userId: "",
outerVisible: false,
tripTitle: "",
tripDetails: [],
TCIDList: null,
tripObj: {
tcid: 0,
configId: 0,
cityId: 0,
orderId: 0,
},
showHotelObj: {
showPrice: false,
showPay: false,
showZhan: false,
},
qjGroupId: -1,
S_Travel_Share: false, //分享权限
userInfo: {},
crmOrderObj: null,
isShowTeamOrder: false, //是否显示订单弹窗
teamInfo: {}, //团队信息
saveMsg: [],
images: [],
seeType:0,
};
},
components: {},
filters: {
priceFormat(value) {
if (value == null) {
return 0.0;
}
let nStr = value.toFixed(2);
nStr += "";
let x = nStr.split(".");
let x1 = x[0];
let x2 = x.length > 1 ? "." + x[1] : "";
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, "$1" + "," + "$2");
}
return x1 + x2;
},
priceFormat2(value) {
if (value == null) {
return "已包含";
}
let nStr = value.toFixed(2);
nStr += "";
let x = nStr.split(".");
let x1 = x[0];
let x2 = x.length > 1 ? "." + x[1] : "";
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, "$1" + "," + "$2");
}
let result = x1 + x2;
if (result === "0.00") {
result = "已包含";
}
return result;
},
},
methods: {
inited(viewer) {
this.$viewer = viewer
},
goTeamBalancePayment (name, path, id, outBranchId) {
this.$router.push({
name: path,
query: {id: id, outBranchId: outBranchId, blank: 'y', tab: name}
})
},
// 结束日期不能大于开始日期
dataDui() {
if (this.msg.StartTime > this.msg.EndTime && this.msg.EndTime !== "") {
this.$message.error("结束日期不能大于开始日期");
this.msg.EndTime = "";
return
}
},
changeSelect() {
this.list.forEach((element) => {
element.check = this.allCheck;
});
},
changeSelectItem() {
const listTmp = JSON.parse(JSON.stringify(this.list));
this.list = [];
this.$nextTick(() => {
this.list = listTmp;
});
},
cancelLoss(){
this.showDialog=false;
this.saveMsg=[];
this.images=[];
this.seeType=0;
this.queryData={};
},
submitOP() {
let params =this.queryData;
params.FileList =[];
params.FileList =this.saveMsg
this.apipost(
"travelcontract_post_SetTravelTicketLoss",
params,
(res) => {
if (res.data.resultCode == 1) {
this.$message.success(res.data.message || "操作成功");
this.showDialog = false;
this.$emit("success");
}
},
(err) => {}
);
},
editItem(item,seeType) {
this.seeType=seeType;
this.queryData = {
TCID: item.TCID ,
Id:item.TicketLoassId,
TCNUM:item.TCNUM,
Notes: item.Notes
};
this.saveMsg=JSON.parse(JSON.stringify(item.FileList));
this.images=[];
if(this.saveMsg&&this.saveMsg.length>0){
this.saveMsg.forEach(x=>{
if(x.Type==3){
this.images.push(x.Url)
}
})
}
this.editNum = true;
this.showDialog = true;
},
showUpLoadFile(i) { // 预览上传文件
if (i.Content.substring(i.Content.lastIndexOf('.') + 1, i.Content.length).toUpperCase() == 'PDF') {
this.previewPDF(i.Url)
} else {
window.open("https://view.officeapps.live.com/op/view.aspx?src=" + i.Url)
}
},
deleteUploadFile(i) { // 删除上传文件
this.saveMsg.splice(i, 1);
this.images = []
this.saveMsg.forEach(x=>{
if(x.Type==3){
this.images.push(x.Url)
}
})
},
uploadFileBtn(file) { //上传
if (file.file.size > 1024 * 1024 * 10) {
this.$message.warning(this.$t('tips.wjdxbncgsz'))
return
}
// 1 文档 2 数据 3 图片
let typeArr = [{
stringArr: 'GIF|JPG|JPEG|PNG|BMP',
type: 3
},
{
stringArr: 'DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF',
type: 1
},
]
let ft = file.file.name.substring(file.file.name.lastIndexOf('.') + 1, file.file.name.length).toUpperCase();
let fileTypeNumber = 2;
let typeOk = false;
typeArr.forEach(x => {
if (x.stringArr.indexOf(ft) != '-1') {
fileTypeNumber = x.type;
typeOk = true;
}
})
if (!typeOk) return this.$message.error(this.$t('tips.qscWEfile'));
let newArr = [];
newArr.push(file.file)
let path = "/Upload/Temporary/"
this.$message.info(this.$t('tips.shangchuanzhong'))
this.UploadSelfFileT(path, newArr, x => {
let fileSize = file.file.size < 1024 ? file.file.size : (file.file.size / 1024).toFixed(0);
this.saveMsg.push({
Content: x.data.FilePath,
ID: 0,
Type: fileTypeNumber,
Url: this.domainManager().ViittoFileUrl + x.data.FilePath,
});
this.images.push(this.domainManager().ViittoFileUrl + x.data.FilePath)
this.$message.success(this.$t('tips.scchenggong'))
}, 1);
},
getSelcetedIds() {
return this.list
.filter((item) => item.check)
.map((item) => item.TCID)
.join(",");
},
//刷新页面
reSearchPage() {
this.isShowTeamOrder = false;
this.teamInfo = {};
this.$emit("success");
},
//关闭窗口
closeForm() {
this.isShowTeamOrder = false;
this.teamInfo = {};
},
// 分享权限
GetSupperOrderEditAuth() {
var actionCode = this.$AuthCode.S_Travel_Share;
this.CheckUserAuth(actionCode, (res) => {
if (res.data.resultCode == 1 && res.data.data == 1) {
this.S_Travel_Share = true;
}
});
},
downloadFile(item) {
let reg = /^http(s)?:\/\/(.*?)\//;
this.downloadFileRename(item.FullUrl.replace(reg, ""), item.Name);
},
// 获取微信二维码
getWxCode(key) {
this.wxLoading = false;
if (this.list[key].wxImage === "") {
this.wxLoading = true;
this.apipost(
"TaskManagemnet_get_GetWeiXinShare", {
ConfigId: this.list[key].ConfigID,
TCID: this.list[key].TCID,
},
(res) => {
if (res.data.resultCode == 1) {
let url = res.data.data;
this.list[key].wxImage = url;
this.wxLoading = false;
} else {
this.$message.error("二维码获取失败");
}
},
(err) => {}
);
}
},
toTrip(obj) {
this.tripObj.tcid = obj.TCID;
this.tripObj.configId = obj.ConfigID;
this.tripObj.cityId = obj.StartCityID;
this.tripObj.orderId = 0;
this.travelControlTripLayerShow = true;
},
hideTripDown() {
this.travelControlTripLayerShow = false;
},
goUrl(id, tcmun) {
let path;
if (this.pagesTitle == "跟团游产品") {
path = "groupTourOrderByTuan";
}
if (this.pagesTitle == "当地游产品") {
path = "groupTourOrderByTuanOne";
}
this.$router.push({
name: path,
query: {
id: id,
tcmun: tcmun,
blank: "y",
tab: "团报名清单",
},
});
},
goUrlX(item) {
this.$router.push({
name: "GroupAdvertising",
query: {
LineID: item.LineID,
TCID: item.TCID,
blank: "y",
tab: "团期广告",
},
});
},
//获取航班详情
getDetails(index) {
this.tripDetails = this.list[index].flightList;
},
goBuy(obj) {
this.teamInfo = obj;
this.isShowTeamOrder = true;
},
// 产品详情
getTitledetail(item) {
if (this.pagesTitle == "跟团游产品") {
this.getJourney(item.ConfigID, item.TCID, item.LineName);
}
if (this.pagesTitle == "当地游产品") {
this.goB2Bdetail(item.ConfigID, item.TCID);
}
},
goB2Bdetail(ConfigId, tcid) {
var B2BDomain = this.CurrentUserInfo.B2BDomain; //'www.oytour.com';
this.$tripUtils.GotoB2BPage(
B2BDomain,
encodeURIComponent(ConfigId),
tcid
);
},
getJourney(id, TCID, title) {
var that = this;
this.tripTitle = title;
this.$nextTick(() => {
that.$refs.comTeam.GetTrip(id, TCID);
});
that.outerVisible = true;
},
clickHotel(TCID, LineId, LineteamId) {
var msg = {
TCID: TCID,
LineId: LineId,
LineteamId: LineteamId,
};
this.apipost(
"b2b_post_SetHotelClickService",
msg,
(res) => {
if (res.data.resultCode == 1) {}
},
(err) => {}
);
},
//直客版行程
goB2B(item) {
var B2BDomain = this.CurrentUserInfo.B2BDomain;
this.$tripUtils.GotoB2CPage(B2BDomain, item.ConfigID, item.TCID);
},
goUrlT(path, obj, outItem, title) {
this.$router.push({
name: path,
query: {
"id": obj,
NewCombinationNum: outItem.NewCombinationNum,
blank: 'y',
tab: title
}
})
},
},
mounted() {
this.userInfo = this.getLocalStorage();
this.GetSupperOrderEditAuth(); //分享权限
this.qjGroupId = this.QjGroupId();
this.CurrentUserInfo = this.userInfo;
this.userId = this.userInfo.EmployeeId;
if (this.$route.query.TCIDList) {
this.TCIDList = this.$route.query.TCIDList;
}
},
};
</script>
<style>
@import "../../assets/css/newTravelManager.css";
.productQuerySearch {
width: 100%;
min-height: auto;
overflow: hidden;
padding: 0 0 20px 0;
}
.productQuerySearch li {
float: left;
font-size: 12px;
color: #666;
margin: 20px 0 0px 0;
}
.productQuerySearch li>span {
display: inline-block;
}
.productQuerySearch li span>em {
display: inline-block;
min-width: 60px;
text-align: right;
font-style: normal;
margin: 0 12px 0 0;
}
.productQuerySearch li:last-child {
position: fixed;
z-index: 50;
top: 36px;
right: 20px;
}
.productQuerySearch ul {
position: relative;
overflow: hidden;
}
.elPopoverLayer {
padding: 0px 10px;
}
.elPopoverLayer p {
line-height: 34px;
font-size: 12px;
}
.elPopoverLayer p>i {
font-style: normal;
border: 1px solid #999;
padding: 0 3px;
font-size: 12px;
margin-right: 10px;
font-weight: bold;
color: #333;
}
.elPopoverLayer p>span {
display: inline-block;
width: 130px;
}
.elPopoverLayer p>span>b {
margin-left: 10px;
color: #2aaef2;
}
.superSearchLayer>p {
padding: 20px 0;
font-size: 14px;
color: #333;
font-weight: bold;
}
.superSearchLayer>div {
margin-top: 20px;
color: #666;
font-size: 12px;
}
.superSearchLayer>div>span {
margin: 0 15px 0 5px;
}
.productQuerybottomLayer {
overflow: auto;
position: fixed;
/* max-height: 300px; */
z-index: 50;
bottom: 0;
left: 0;
border-top: 3px solid #38425d;
background-color: #ffffff;
padding: 10px 10px 0;
width: 100%;
}
.productQuerybottomLayer .el-form-item__label {
font-size: 12px !important;
}
.productQuerybottomLayer>p {
border-left: 3px solid #e95252;
text-indent: 15px;
height: 16px;
font-family: "PingFangSc-Fine";
font-size: 16px;
margin-bottom: 20px;
line-height: 14px;
color: #000;
}
.productQuerybottomLayer .el-input {
width: auto !important;
}
.productQueryList .disabledBtn {
background: #999 !important;
border-color: #999 !important;
}
.product_union {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union::after {
content: "联";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_union1 {
position: absolute;
top: 0px;
left: 0px;
width: 0px;
height: 0px;
border-top: 15px solid red;
border-bottom: 15px solid transparent;
border-left: 15px solid red;
border-right: 15px solid transparent;
}
.product_union1::after {
content: "内";
position: absolute;
top: -14px;
left: -11px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.product_warning {
position: absolute;
top: 0px;
right: 0px;
width: 0px;
height: 0px;
border-top: 10px solid red;
border-bottom: 10px solid transparent;
border-left: 10px solid transparent;
border-right: 10px solid red;
}
.product_warning::after {
content: "!";
position: absolute;
top: -12px;
right: -5px;
white-space: nowrap;
color: #ffffff;
font-size: 12px;
}
.PQ_detail {
width: 100%;
border-collapse: collapse;
}
.PQ_detail tr th,
.v-table-title-cell {
background: #e6e6e6;
height: 40px;
font-size: 14px;
border-right: 1px solid #e6e6e6;
color: #333;
}
.PQ_detail tr {
background: #fff;
text-align: center;
height: 40px;
}
.PQ_detail tr td {
font-size: 12px;
border: 1px solid #e5e5e5;
}
.PQ_HotelPop {
overflow: auto;
max-height: 350px;
}
.PQ_HotelPop table td {
padding: 5px 0;
text-align: center;
}
.PQ_HotelPop table th {
text-align: center;
}
.productQuerybottomLayer .el-upload-list {
width: 200px;
}
</style>
<template>
<div class="flexOne">
<div class="productQuerySearch" v-if="!TCIDList">
<ul>
<li>
<span><em>{{ $t("scen.sc_cp") }}</em>
<el-select class="w150" v-model="msg.BranchId" filterable :placeholder="$t('pub.pleaseSel')">
<el-option v-for="item in companyList" :label="item.BName" :value="item.Id" :key="item.Id">
</el-option>
</el-select>
</span>
</li>
<li>
<span><em>{{ $t("advmanager.v_line") }}</em>
<el-select class="w150" v-model="msg.LineId" filterable :placeholder="$t('pub.pleaseSel')" @change="
getLineTeamList(msg.LineId), getAimPlaceList(msg.LineId, '')
">
<el-option :label="$t('pub.unlimitedSel')" value="-1"></el-option>
<el-option v-for="(item,index) in LineList" :label="item.LineName" :value="item.LineID" :key="index">
</el-option>
</el-select>
</span>
</li>
<!-- <li>
<span><em>{{ $t("advmanager.v_xilie") }}</em>
<el-select class="w150" v-model="msg.LineTeamId" filterable :placeholder="$t('pub.pleaseSel')"
@change="getAimPlaceList('', msg.LineTeamId)">
<el-option :label="$t('pub.unlimitedSel')" value="-1"></el-option>
<el-option v-for="item in LineTeamList" :label="item.LtName" :value="item.LtID" :key="item.LtID">
</el-option>
</el-select>
</span>
</li> -->
<li>
<span>
<em>{{ $t("visa.v_tuanhao") }}</em>
<el-input v-model="msg.TCID" class="w150"></el-input>
</span>
</li>
<!-- <li>
<span>
<em>团名</em>
<el-input v-model="msg.Title" class="w150" clearable></el-input>
</span>
</li> -->
<li>
<span><em>{{ $t("hotel.hotel_StarDate") }}</em>
<el-date-picker v-model="msg.StartTime" @change="dataDui()" class="w135" value-format="yyyy-MM-dd"
type="date"></el-date-picker>
-
<el-date-picker v-model="msg.EndTime" @change="dataDui()" class="w135" value-format="yyyy-MM-dd"
type="date"></el-date-picker>
</span>
</li>
<li>
<span style="margin: 0 0 0 24px"><em>机损核实状态</em>
<el-select class="w150" v-model="msg.DamageStatus" filterable >
<el-option label="不限" :value="0"></el-option>
<el-option label="未确认" :value="1"></el-option>
<el-option label="已确认" :value="2"></el-option>
</el-select>
</span>
</li>
<li>
<input style="margin-top: 10px"
type="button"
class="hollowFixedBtn"
:value="$t('pub.searchBtn')"
@click="
getList();
resetPageIndex();
"
/>
</li>
</ul>
</div>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage"
layout="total,prev, pager, next, jumper" :page-size="msg.pageSize" :total="total">
</el-pagination>
<!-- 产品列表 -->
<productOrderList :msg="msg" :loading="loading" :list="list" :isVisa="isVisa" @success="reSearchPage" :pagesTitle="pagesTitle"></productOrderList>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage"
layout="total,prev, pager, next, jumper" :page-size="msg.pageSize" :total="total">
</el-pagination>
</div>
</template>
<script>
import productOrderList from "./Common/ProductTicketLossList.vue";
export default {
data() {
return {
isVisa: false, // 是否是签证下面的菜单
pagesTitle: '跟团游产品',
//当前登录用户信息
CurrentUserInfo: {},
userId: "",
loading: true,
currentPage: 1,
total: 0,
msg: {
DamageStatus: 1,
pageIndex: 1,
pageSize: 10,
LineId: "-1",
LineTeamId: "-1",
TCID: "",
TCIDList: "",
StartTime: "",
EndTime: "",
BranchId: "-1",
Title: "", //团名
},
list: [],
LineList: [],
LineTeamList: [],
AimPlaceList: [],
airlineList: [],
companyList: [],
startCityList: [],
startCityList1: [],
TCIDList: null,
userInfo: {},
crmOrderObj: null,
};
},
components: {
productOrderList
},
methods: {
//刷新页面
reSearchPage() {
this.getList();
},
// 结束日期不能大于开始日期
dataDui() {
if (this.msg.StartTime > this.msg.EndTime && this.msg.EndTime !== "") {
this.$message.error("结束日期不能大于开始日期");
this.msg.EndTime = "";
}
},
getList() {
this.loading = true;
this.apipost(
"travelcontract_post_GetTravelTicketLossPage",
this.msg,
(res) => {
if (res.data.resultCode == 1) {
this.loading = false;
this.total = res.data.data.count;
for (let i = 0; i < res.data.data.pageData.length; i++) {
res.data.data.pageData[i]["wxImage"] = "";
}
this.list = res.data.data.pageData;
this.list.forEach(element => {
element.check = false
});
} else {
this.Error(res.data.message);
}
},
(err) => {}
);
},
// 线路
getLineList() {
// LineDirection: 0
this.apipost("line_post_GetAllList_V3", {
IsShow: -1
}, (res) => {
if (res.data.resultCode == 1) {
this.LineList = res.data.data;
}
});
},
//获取系列列表
getLineTeamList(lineId) {
this.LineTeamList = [];
this.apipost(
"team_post_GetList", {
lineID: lineId,
isTOOP: 1,
},
(res) => {
if (res.data.resultCode == 1) {
this.msg.LineTeamId = "-1";
this.LineTeamList = res.data.data;
}
}
);
},
//获取目的地列表
getAimPlaceList(lineId, lineTeamId) {
let myLineId = lineId === "" ? this.msg.LineId : lineId;
let myLineTeamId = lineTeamId === "" ? this.msg.LineTeamId : lineTeamId;
this.AimPlaceList = [];
this.apipost(
"team_post_GetListForCascading", {
LineID: myLineId,
LtID: myLineTeamId,
},
(res) => {
if (res.data.resultCode == 1) {
this.AimPlaceList = res.data.data;
}
}
);
},
// 出发城市、目的地
getStartList() {
this.apipost("sellorder_get_GetAllStartCity", {}, (res) => {
if (res.data.resultCode == 1) {
this.startCityList = res.data.data;
} else {}
});
},
getStartList1() {
this.apipost(
"city_post_GetList", {
isDefault: -1,
priceType: -1,
},
(res) => {
if (res.data.resultCode == 1) {
this.startCityList1 = res.data.data;
} else {}
}
);
},
// 公司
getCompanyList() {
let RB_Group_id = this.CurrentUserInfo.RB_Group_id;
let msg = {
Status: 0,
is_show: 0,
RB_Group_Id: RB_Group_id,
};
this.apipost(
"admin_get_BranchGetList",
msg,
(res) => {
if (res.data.resultCode == 1) {
this.companyList = [{
Id: "-1",
BName: "不限",
}, ];
res.data.data.forEach((x) => {
var obj = {
Id: "",
BName: "",
};
obj.Id = x.Id.toString();
obj.BName = x.BName;
this.companyList.push(obj);
});
}
},
(err) => {}
);
},
getAirlineList() {
//获取航空公司*
let msg = {};
this.apipost(
"airline_post_GetList",
msg,
(res) => {
this.airlineList = res.data.data;
},
(err) => {}
);
},
handleCurrentChange(val) {
this.msg.pageIndex = val;
this.getList();
},
resetPageIndex() {
this.msg.pageIndex = 1;
this.currentPage = 1;
},
},
mounted() {
if(this.$route.path === '/productOrderList') {
this.isVisa = false
} else {
this.isVisa = true
this.msg.visaNum = 1
}
this.userInfo = this.getLocalStorage();
this.CurrentUserInfo = this.userInfo ;
this.userId = this.userInfo.EmployeeId;
this.msg.BranchId = '-1'//this.userInfo.RB_Branch_id.toString();
if (this.$route.query.id) {
this.msg.BranchId = "-1";
this.msg.TCID = this.$route.query.id;
}
if (this.$route.query.TCIDList) {
this.msg.TCIDList = this.TCIDList = this.$route.query.TCIDList;
}
let STime = this.getBeforeDate(31,this.getBeforeDate(0,new Date().Format("yyyy-MM-dd")))
let ETime = this.getBeforeDate(0,this.getBeforeDate(0,new Date().Format("yyyy-MM-dd")))
if(!this.msg.StartTime){
this.msg.StartTime = STime;
this.msg.EndTime = ETime;
}
this.getCompanyList();//公司
this.getList();//产品列表
this.getLineList();//线路
//this.getAirlineList();//获取航空公司
// this.getStartList();//出发城市
// this.getStartList1();//目的地
},
};
</script>
...@@ -1233,7 +1233,7 @@ ...@@ -1233,7 +1233,7 @@
</span> </span>
<input v-if="DataList.TeamBalance.ShouldReceive==0&&EditBtn" type="button" class="hollowFixedBtn" <input v-if="DataList.TeamBalance.ShouldReceive==0&&EditBtn" type="button" class="hollowFixedBtn"
value="设为机票损失" @click="Setloss('','all')" style="height:24px;padding:0 10px" /> value="设为机票损失" @click="Setloss('','all')" style="height:24px;padding:0 10px" />
<el-tag type="danger" v-if="DataList.TeamBalance.TicketLoassId>0" style="height:24px;padding:0 10px" >机票损失已确认({{DataList.TeamBalance.TicketLoassByStr}}/{{DataList.TeamBalance.TicketLoassTimeStr}} )</el-tag>
</div> </div>
</div> </div>
<table class="singeRowTable" border="0" cellspacing="0" cellpadding="0"> <table class="singeRowTable" border="0" cellspacing="0" cellpadding="0">
......
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