Commit 57ebb252 authored by 沈良进's avatar 沈良进

save

parent d8207d33
<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 {
margin-top: 3px;
font-size: 12px;
color: #999;
cursor: pointer;
max-height: 40px;
line-height: 20px;
display: -webkit-box;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
.productQueryList li .d12 .d12p:hover {
text-decoration: underline;
color: #333;
}
.productQueryList li .d12 .d12TC {
margin: 5px 0;
color: #666666;
font-size: 12px;
}
.productQueryList li .d1 {
width: 18%;
position: relative;
padding: 0 20px;
}
.productQueryList li .d2 {
width: 14%;
text-align: center;
padding-top: 20px;
}
.productQueryList li .d2 p.flightNo {
background: #ccc;
width: 136px;
margin: 5px 0;
padding: 0 10px;
height: 22px;
line-height: 22px;
display: inline-block;
font-size: 14px;
}
.productQueryList li .d2 p.flightNo em {
font-style: normal;
color: #333;
font-size: 12px;
font-weight: bold;
}
.productQueryList li .d2 p.flightNo .flem {
height: 22px;
width: 50px;
display: inline-block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.productQueryList li .d2 p>span {
color: #fff;
font-size: 12px;
border-radius: 10px;
background: #2aaef2;
padding: 2px 5px;
cursor: pointer;
}
.productQueryList li .d2>div>div {
display: inline-block;
line-height: 24px;
font-size: 12px;
}
.productQueryList li .d3 {
width: 17%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d3 p {
line-height: 24px;
}
.productQueryList li .d3 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d3 p>em {
background: #ff9c00;
font-style: normal;
margin-left: 8px;
color: #fff;
border-radius: 4px;
padding: 2px 5px;
}
.productQueryList li .d4 {
width: 10%;
padding-left: 20px;
padding-top: 20px;
}
.productQueryList li .d4 p span.price {
color: #333;
text-decoration: underline;
font-size: 12px;
}
.productQueryList li .d4 p span.price:hover {
color: #e95252;
font-weight: bold;
cursor: pointer;
}
.productQueryList li .d5 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d5 p {
line-height: 26px;
}
.productQueryList li .d5 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d5 p>i {
font-weight: bold;
font-style: normal;
}
.productQueryList li .d8 {
width: 15%;
padding-left: 40px;
padding-top: 20px;
}
.productQueryList li .d8 p {
line-height: 26px;
}
.productQueryList li .d8 p>span {
color: #666;
font-size: 12px;
margin-right: 10px;
}
.productQueryList li .d8 p>i {
font-style: normal;
}
.productQueryList li .d6 {
padding: 20px 40px;
width: 100%;
height: inherit;
border-top: 1px solid #e5e5e5;
}
.productQueryList li .d6 p {
display: table-cell;
color: #e95252;
}
.productQueryList li .d6 p:nth-child(1) {
width: 60px;
font-size: 12px;
}
.productQueryList li .d7 {
width: 10%;
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;
}
</style>
<template>
<div class="productQueryList" v-loading="loading">
<div style="margin-bottom: 10px">
<el-checkbox v-model="allCheck" @change="changeSelect">全选</el-checkbox>
<el-button style="margin-left: 10px" type="primary" size="small" @click="eidtItems">批量操作</el-button>
</div>
<table class="MycustomerTable singeRowTable" border="0" cellspacing="0" cellpadding="0" v-loading="loading">
<tr>
<th>姓名</th>
<th>联系电话</th>
<th>门店名称</th>
<th>累计交易额</th>
<th>询价与需求</th>
<th>所属联盟</th>
</tr>
<tr v-for="(item,i) in list" :key="i">
<td>
<span>{{item.contact}}</span>
<el-popover width="280" popper-class="pd20" trigger="click">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr class="_color_666">
<th>异常名称</th>
<th>创建人</th>
<th>创建时间</th>
</tr>
</table>
<span v-show="item.exceptionCount > 0" slot="reference" class="yichangde"
@click="yichangde(item)"></span>
</el-popover>
</td>
<td>{{item.contactNumber}}</td>
<td>{{item.customerName}}</td>
<td><span style="cursor: pointer;text-decoration: underline;"
@click.stop="goUrC('CouponsList',item.customerAccountId)">{{item.couponNum}}</span></td>
<td>{{item.allianceName}}</td>
<td>{{item.allianceName}}</td>
</tr>
<tr v-if="list.length==0">
<td colspan="12" style="text-align:center">暂无数据</td>
</tr>
</table>
<el-dialog title="编辑" :visible.sync="showDialog" width="600px" height="40%">
<div v-if="!isVisa">
<span style="width: 15%; display: inline-block">团OP</span>
<el-select style="width: 80%" v-model="queryData.OPId" filterable :placeholder="$t('pub.pleaseSel')">
<el-option v-for="item in EmployeeList" :label="item.EmName" :value="item.EmployeeId" :key="item.EmployeeId">
</el-option>
</el-select>
</div>
<div v-if="!isVisa" style="margin-top: 10px">
<span style="width: 15%; display: inline-block">助手</span>
<el-select style="width: 80%" v-model="queryData.AssistantId" multiple filterable
:placeholder="$t('pub.pleaseSel')">
<el-option v-for="item in EmployeeList" :label="item.EmName" :value="item.EmployeeId" :key="item.EmployeeId">
</el-option>
</el-select>
</div>
<div style="margin-top: 10px">
<span style="width: 15%; display: inline-block">签证OP</span>
<el-select filterable style="width: 80%" v-model="queryData.VisaOPId" :placeholder="$t('pub.pleaseSel')">
<el-option v-for="item in EmployeeList" :label="item.EmName" :value="item.EmployeeId" :key="item.EmployeeId">
</el-option>
</el-select>
</div>
<div style="margin-top: 10px">
<span style="width: 15%; display: inline-block">签证助手</span>
<el-select style="width: 80%" v-model="queryData.VisaAssistantId" multiple filterable
:placeholder="$t('pub.pleaseSel')">
<el-option v-for="item in EmployeeList" :label="item.EmName" :value="item.EmployeeId" :key="item.EmployeeId">
</el-option>
</el-select>
</div>
<div style="margin-top: 10px" v-if="editNum">
<span style="width: 15%; display: inline-block">签证人数</span>
<el-input type="number" style="width: 80%; margin-left: 4px" v-model="queryData.VisaNum" />
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="showDialog = false">取 消</el-button>
<el-button style="margin-right: 24px" type="primary" @click="submitOP">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
props: ["loading", "list", "pagesTitle", "isVisa"],
data() {
return {
editNum: false,
showDialog: false,
queryData: {},
EmployeeList: [],
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: {}, //团队信息
};
},
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: {
changeSelect() {
console.log("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;
});
},
submitOP() {
let params = { TCIDs: this.TCIDs, Type: this.isVisa ? 1 : 0 };
if (!this.isVisa) {
params.OPId = this.queryData.OPId;
if (!this.queryData.AssistantId || !this.queryData.AssistantId.length) {
params.AssistantId = '';
} else {
params.AssistantId = this.queryData.AssistantId.join(",");
}
}
params.VisaOPId = this.queryData.VisaOPId;
if (
!this.queryData.VisaAssistantId ||
!this.queryData.VisaAssistantId.length
) {
params.VisaAssistantId = ''
} else {
params.VisaAssistantId = this.queryData.VisaAssistantId.join(",");
}
if (this.editNum) {
if (this.queryData.VisaNum > this.editObj.NeedVisaNum) {
this.$message.error("签证人数最多" + this.editObj.NeedVisaNum + "人");
return;
} else {
params.VisaNum = this.queryData.VisaNum;
}
}
this.apipost(
"travel_post_BatchSetOpInfo",
params,
(res) => {
if (res.data.resultCode == 1) {
this.$message.success(res.data.message || "操作成功");
this.showDialog = false;
this.$emit("success");
}
},
(err) => {}
);
},
editItem(item) {
this.TCIDs = item.TCID;
this.editObj = item;
this.queryData = {
OPId: item.OPId || "",
AssistantId:
!item.AssistantId || item.AssistantId == "0" ?
[] :
item.AssistantId.split(",").map((item) => Number(item)),
VisaOPId: item.VisaOPId || "",
VisaAssistantId:
!item.VisaAssistantId || item.VisaAssistantId == "0" ?
[] :
item.VisaAssistantId.split(",").map((item) => Number(item)),
VisaNum: item.VisaNum == -1 ? item.NeedVisaNum : item.VisaNum,
};
this.editNum = true;
this.showDialog = true;
},
eidtItems() {
this.TCIDs = this.getSelcetedIds();
if (!this.TCIDs) {
this.$message.error("请选择要编辑的内容");
return;
}
this.editNum = false;
this.queryData = {};
this.showDialog = true;
},
getSelcetedIds() {
return this.list
.filter((item) => item.check)
.map((item) => item.TCID)
.join(",");
},
//根据当前员工所在部门获取该部门及子部门员工信息
getEmployeeList() {
this.apipost(
"admin_get_GetEmpByDepPostNameList", {},
(res) => {
if (res.data.resultCode == 1) {
this.EmployeeList = res.data.data;
}
},
(err) => {}
);
},
//刷新页面
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) {
console.log('goUrlTO',path, obj, outItem, title)
this.$router.push({
name: path,
query: {
"id": obj,
NewCombinationNum: outItem.NewCombinationNum,
blank: 'y',
tab: title
}
})
},
},
mounted() {
this.getEmployeeList();
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>未维护OP</em>
<el-select class="w150" v-model="msg.SelectOP" filterable placeholder="未维护OP">
<el-option label="不限" :value="0"></el-option>
<el-option v-if="!isVisa" label="主团" :value="1"></el-option>
<el-option label="签证" :value="2"></el-option>
</el-select>
</span>
</li>
<li>
<div style="margin: 8px 0 0 24px">
<span><em>只查询有签证的团</em>
<el-switch v-model="msg.visaNum" :active-value="1" :inactive-value="0"></el-switch>
</span></div>
</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>
<!-- 产品列表 -->
<signedClientList :loading="loading" :list="list" :isVisa="isVisa" @success="reSearchPage" :pagesTitle="pagesTitle"></signedClientList>
<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 signedClientList from "./Common/signedClientList.vue";
export default {
data() {
return {
isVisa: false, // 是否是签证下面的菜单
pagesTitle: '跟团游产品',
//当前登录用户信息
CurrentUserInfo: {},
userId: "",
loading: true,
currentPage: 1,
total: 0,
msg: {
SelectOP: 0,
pageIndex: 1,
pageSize: 10,
LineId: "-1",
LineTeamId: "-1",
tCID: "",
TCIDList: "",
StartTime: "",
EndTime: "",
BranchId: "-1",
Title: "", //团名
visaNum: 0,
},
list: [],
LineList: [],
LineTeamList: [],
AimPlaceList: [],
airlineList: [],
companyList: [],
startCityList: [],
startCityList1: [],
TCIDList: null,
userInfo: {},
crmOrderObj: null,
};
},
components: {
signedClientList
},
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.msg.SigningType=1
this.apipost(
"app_get_my_customer_list",
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() {
this.apipost("line_post_GetAllList_V2", {
LineDirection: 0
}, (res) => {
if (res.data.resultCode == 1) {
this.LineList = res.data.data;
}
});
},
//获取系列列表
getLineTeamList(lineId) {
this.LineTeamList = [];
this.apipost(
"team_post_GetList", {
lineID: lineId,
isTOOP: 1,
},
(res) => {
if (res.data.resultCode == 1) {
this.msg.LineTeamId = "-1";
this.LineTeamList = res.data.data;
}
}
);
},
//获取目的地列表
getAimPlaceList(lineId, lineTeamId) {
let myLineId = lineId === "" ? this.msg.LineId : lineId;
let myLineTeamId = lineTeamId === "" ? this.msg.LineTeamId : lineTeamId;
this.AimPlaceList = [];
this.apipost(
"team_post_GetListForCascading", {
LineID: myLineId,
LtID: myLineTeamId,
},
(res) => {
if (res.data.resultCode == 1) {
this.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 = 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;
}
if (this.msg.StartTime === "") {
let nowDay = this.FormartDate(new Date());
this.msg.StartTime = nowDay;
}
this.getCompanyList();//公司
this.getList();//产品列表
this.getLineList();//线路
this.getAirlineList();//获取航空公司
this.getStartList();//出发城市
this.getStartList1();//目的地
},
};
</script>
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