<template> <div> <div class="query-box" style="border-bottom: none;"> <ul> <li> <span> <em>{{$t('advmanager.v_line')}}</em> <el-select v-model="msg.LineId" filterable :placeholder="$t('pub.pleaseSel')" @change="getLinePlaceList()"> <el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option> <el-option v-for="item in queryCommonData.LineList" :label='item.LineName' :value='item.LineID' :key='item.LineID'> </el-option> </el-select> </span> </li> <li> <span> <em>{{$t('Operation.Op_Country')}}/{{$t('system.query_dest')}}</em> <el-select v-model="msg.PlaceID" filterable :placeholder="$t('pub.pleaseSel')" @change="getLineTeamList()"> <el-option :label="$t('pub.unlimitedSel')" :value="0"></el-option> <el-option v-for="item in queryCommonData.PlaceList" :label="item.PlaceName" :value="item.PlaceID" :key="item.LtID"></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('advmanager.v_xilie')}}</em> <el-select v-model="msg.LineteamId" filterable :placeholder="$t('pub.pleaseSel')"> <el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option> <el-option v-for="item in queryCommonData.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.TCNUM'></el-input> </span> </li> <li><span><em>{{$t('sm.Date')}}</em> <!-- <el-date-picker v-model='msg.StartDate' class='w135' value-format="yyyy-MM-dd" type="date" :picker-options="pickerBeginDateBefore"></el-date-picker> --> <DateLimit :clearable="false" :StartGroupDate="msg.StartDate" :EndGroupDate="msg.EndDate" @change="(date)=> msg.StartDate = date"></DateLimit> - <el-date-picker v-model='msg.EndDate' class='w135' value-format="yyyy-MM-dd" type="date" :picker-options="pickerBeginDateAfter"></el-date-picker> </span> </li> <li><span> <em>{{$t('admin.admin_status')}}</em> <el-select v-model='msg.PriceStatus'> <el-option :label="$t('pub.unlimitedSel')" :value="0"></el-option> <el-option v-for="team in $tripUtils.TeamStatesList.TeamStates" :label="team.Name" :key="team.Id" :value="team.Id" v-if="team.Id==1 || team.Id==3"></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('Airticket.Air_Airlines')}}</em> <el-select v-model="msg.AirLineId" filterable :placeholder="$t('system.ph_buxian')"> <el-option :label="$t('system.ph_buxian')" :value="0"> </el-option> <el-option v-for="item in queryCommonData.AirlineList" :key="item.AirLineId" :label="item.AlName" :value="item.AirLineId"></el-option> </el-select> </span> </li> <li> <span> <em>OP</em> <el-select v-model="msg.CreateBy" filterable :placeholder="$t('pub.pleaseSel')"> <el-option :label="$t('pub.unlimitedSel')" :value="0"> </el-option> <el-option v-for="item in queryCommonData.EmployeeList" :label="item.EmName" :value="item.EmployeeId" :key="item.EmployeeId"></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('salesModule.DJNum')}}</em> <el-input v-model='msg.CombinationNum'></el-input> </span> </li> <li> <span> <em>{{$t('hotel.hotel')}}</em> <el-select v-model="msg.HotelId" :placeholder="$t('pub.pleaseSel')" filterable> <el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option> <el-option v-for="item in HotelList" :key="item.ID" :label="item.Name" :value="item.ID"></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('salesModule.HotelStatus')}}</em> <el-select v-model="msg.HotelStatus" :placeholder="$t('pub.pleaseSel')" filterable> <el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option> <el-option :label="$t('ground.jiudianztS[0]')" :value='100'></el-option> <el-option :label="$t('ground.jiudianztS[1]')" :value='1'></el-option> <el-option :label="$t('ground.jiudianztS[2]')" :value='2'></el-option> <el-option :label="$t('ground.jiudianztS[3]')" :value='3'></el-option> <el-option :label="$t('ground.jiudianztS[4]')" :value='4'></el-option> <el-option :label="$t('ground.jiudianztS[5]')" :value='5'></el-option> <el-option :label="$t('ground.jiudianztS[6]')" :value='6'></el-option> <el-option :label="$t('ground.jiudianztS[7]')" :value='7'></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('scen.sc_cp')}}</em> <el-select v-model="msg.OutBranchIds" filterable multiple class="multiple_input" :placeholder="$t('pub.pleaseSel')"> <el-option v-for="item in queryCommonData.BranchList" :label='item.BName' :value='item.Id' :key='item.Id'> </el-option> </el-select> </span> </li> <li> <input type="button" class="normalBtn" :value="$t('pub.searchBtn')" @click="getList();resetPageIndex()" /> <input type="button" class="normalBtn" :value="$t('adm.adm_download')" @click="DownLoadHotel()" /> </li> </ul> </div> <div style="width: 100%; overflow-x: auto;padding-bottom: 10px; " class="ownScrollbarStyle"> <div style="font-size:12px;padding:2px 4px 3px 4px; color:red">{{$t('ground.zymcdcsjbcgygy')}}。</div> <table border="0" cellspacing="1" cellpadding="0" class="roomQueryTalbe" v-loading='loading'> <tr> <th width="120">{{$t('active.ad_xuhao')}}</th> <th width="100">{{$t('sm.chufadi')}}</th> <th width="80">{{$t('salesModule.CompanyNum')}}</th> <th width="150">{{$t('visa.v_hangban')}}</th> <th width="100">{{$t('leader.leader_Leader')}}</th> <th width="100">{{$t('leader.leader_Guide')}}</th> <th width="100">{{$t('advmanager.v_xilie')}}</th> <th width="80">{{$t('ground.jiweishu')}}<br />(Y/E/F)</th> <th width="100">{{$t('ground.shuyongsj')}}</th> <th width="120">{{$t('hotel.hotel_name')}}</th> <th width="120">{{$t('ground.genghuanjiudian')}}</th> <th width="100">{{$t('salesModule.OPstatus')}}</th> <th width="100">{{$t('salesModule.DJstatus')}}</th> </tr> <tr v-if="dataList.length==0"> <td colspan="13">{{$t('active.ld_noData')}}</td> </tr> <template v-for="(outItem,outindex) in dataList"> <tbody :class="{roomQuerySplitTrCss:outindex%2!=0}"> <template v-for="(item,index) in outItem.PriceCommonList"> <template v-for="(subItem,subIndex) in item.PriceHotelResult"> <template v-for="(thirdItem,thirdIndex) in subItem.SubList"> <tr> <td :rowspan="outItem.rootRowspan" v-if='index==0&&subIndex==0&&thirdIndex==0'> {{outItem.NewCombinationNum}} </td> <td :rowspan="item.itemRowSpan" v-if='subIndex==0&&thirdIndex==0'> {{item.StartCityName}} </td> <td :rowspan="item.itemRowSpan" v-if='subIndex==0&&thirdIndex==0'> <div class="w120 link"> <p @click="goUrlT('productQuery',item.TCNUMS,'产品查询')">{{item.TCNUMS}}</p> </div> </td> <td :rowspan="item.itemRowSpan" v-if='subIndex==0&&thirdIndex==0' style="white-space:nowrap;"> <template v-for="(fItem,fIndex) in item.FlightList"> <span style="height:25px; line-height:25px;"> <a style="color: #ff0066;font-weight: bold;">{{fItem.Flight_number}}</a> {{fItem.FlightDateStr}} {{fItem.Departure_time}} {{fItem.dName}} {{fItem.TicketArrivalTime}} {{fItem.aName}} </span><br /> </template> </td> <td :rowspan="item.itemRowSpan" v-if='subIndex==0&&thirdIndex==0'> {{item.LeaderName}} </td> <td :rowspan="item.itemRowSpan" v-if='subIndex==0&&thirdIndex==0'> {{item.GuideName}} </td> <td :rowspan="item.itemRowSpan" v-if='subIndex==0&&thirdIndex==0'> {{item.LineteamName}} </td> <td :rowspan="item.itemRowSpan" v-if='subIndex==0&&thirdIndex==0'> <div class="w120 link"> <p @click="goUrlT('RegistrationList',item.TCIDS,'报名清单')"> {{item.TotalSeat}}/{{item.YSeatNum}}/{{item.ESeatNum}}/{{item.FSeatNum}} </p> </div> </td> <td :rowspan="subItem.SubList.length" v-if='thirdIndex==0'> {{subItem.UseDay}} </td> <td style="text-align:left;padding-left:2px;"> <template v-if="thirdItem.HotelName!=thirdItem.NewHotelName && thirdItem.NewHotelName!=''"> <span style="text-decoration:line-through"> {{thirdItem.HotelName}}</span> </template> <template v-else> {{thirdItem.HotelName}} </template> </td> <td style="text-align:left;padding-left:2px;"> <template v-if="thirdItem.HotelName!=thirdItem.NewHotelName"> <span style="color:red;">{{thirdItem.NewHotelName}}</span> </template> </td> <td> <template v-if="thirdItem.OPState==1"> <span style="color: green;">{{$t('salesModule.OPZD')}}</span> </template> <template v-else-if="thirdItem.OPState==2"> <span style="color:red;">{{$t('salesModule.OPCD')}}</span> </template> </td> <td> <template v-if="thirdItem.DMCState==1"> <span style="color: green;">{{$t('salesModule.DJOK')}}</span> </template> <template v-else-if="thirdItem.DMCState==2"> <span style="color:red;">{{$t('salesModule.DJZK')}}</span> </template> <template v-else-if="thirdItem.DMCState==0"> <span style="color:red;">{{$t('salesModule.DJWCZ')}}</span> </template> </td> </tr> </template> </template> </template> </tbody> </template> </table> </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> </div> </template> <script> import DateLimit from '../public/DateLimit.vue'; export default { components: {DateLimit}, data() { return { userInfo: {}, //用户信息 loading: false, currentPage: 1, total: 0, msg: { pageIndex: 1, pageSize: 5, SelectType: 1, StartDate: '', EndDate: '', //酒店编号 HotelId: 0, //日期 DateStr: "", //出团公司 OutBranchIds: [], LineId: 0, PlaceID: 0, LineteamId: 0, //航空公司 AirLineId: 0, CreateBy: 0, TCNUM: '', PriceStatus: 0, CombinationNum: '', HotelStatus: 0 }, //分公司类表 companyList: [], //酒店类表 HotelList: [], dataList: [], queryCommonData: { //公司数据 BranchList: [], //国家 PlaceList: [], LineList: [], LineTeamList: [], AirlineList: [], EmployeeList: [], }, pickerBeginDateBefore: { disabledDate: time => { if (this.msg.EndDate == null) { return false; } else { let endTime = new Date(this.msg.EndDate) return endTime.getTime() < time.getTime() } } }, pickerBeginDateAfter: { disabledDate: time => { let startTime = new Date(this.msg.StartDate) return startTime.getTime() >= time.getTime() } } } }, methods: { getLineList() { this.apipost("line_post_GetAllList", {}, res => { if (res.data.resultCode == 1) { this.queryCommonData.LineList = res.data.data; this.queryCommonData.PlaceList = [] this.queryCommonData.LineTeamList = [] } else { this.Error(res.data.message); } }); }, //获取目的地列表 getLinePlaceList() { this.msg.PlaceID = 0; this.msg.LineteamId = 0; let msg = { lineID: this.msg.LineId, } this.apipost('team_post_GetLinePlace', msg, res => { if (res.data.resultCode == 1) { this.queryCommonData.PlaceList = res.data.data this.queryCommonData.LineTeamList = [] } }) }, //获取系列列表 getLineTeamList() { this.msg.LineteamId = 0 let msg = { lineID: this.msg.LineId, placeID: this.msg.PlaceID, isTOOP: 1 } this.apipost('team_post_GetList', msg, res => { if (res.data.resultCode == 1) { this.queryCommonData.LineTeamList = res.data.data } }) }, goUrlR(path, obj, title) { this.$router.push({ name: path, query: { "ID": obj, blank: 'y', tab: title } }) }, goUrlT(path, obj, title) { this.$router.push({ name: path, query: { "id": obj, blank: 'y', tab: title } }) }, goUrl(path, obj, outItem, title) { this.$router.push({ name: path, query: { "id": obj.TCIDS, 'TCNUM': obj.TCNUMS, 'flightTotal': obj.TotalSeat, 'GuestNum': obj.CommonReport.HouseStatistics.RealityNum, 'NewCombinationNum': outItem.NewCombinationNum, blank: 'y', tab: title } }) }, handleCurrentChange(val) { this.msg.pageIndex = val; this.getList(); }, resetPageIndex() { this.msg.pageIndex = 1; this.currentPage = 1; }, getList() { this.loading = true; this.apipost('dmcstatistics_get_GetDmcHotelPageList', this.msg, res => { this.loading = false; if (res.data.resultCode == 1) { this.total = res.data.data.count; var sourceData = res.data.data.pageData; if (sourceData) { sourceData.forEach(rootItem => { var rootRowspan = 0; //合团跨行 rootItem.PriceCommonList.forEach(subItem => { var itemRowSpan = 0; //酒店跨行 if (subItem.PriceHotelResult && subItem.PriceHotelResult.length > 0) { subItem.PriceHotelResult.forEach(thirdItem => { thirdItem.SubList.forEach(lastItem => { rootRowspan++; itemRowSpan++; }); }); } subItem.itemRowSpan = itemRowSpan; }); rootItem.rootRowspan = rootRowspan; }); } this.dataList = sourceData; } else { this.$message.error(res.data.message) } }, err => {}) }, //获取酒店列表 GetHotelList() { this.apipost( "hotel_post_GetHasStockHotelList", { QCountry: "651", IsMoreThanZero: 1 }, res => { if (res.data.resultCode == 1) { this.HotelList = res.data.data; } }, err => {} ); }, //下载Excel DownLoadHotel() { this.loading = true; let qMsg = { queryMsg: this.msg, uid: this.userInfo.EmployeeId }; let fileName = this.$t('ground.dingfangcx') + this.$commonUtils.getCurrentDate() + ".xls"; this.GetLocalFile("hotel_get_downloadHotel", qMsg, fileName, res => { this.loading = false; }); }, //获取航空公司 getAirlineList() { this.apipost( 'airline_post_GetList', {}, res => { if (res.data.resultCode == 1) { this.queryCommonData.AirlineList = res.data.data } }, err => {} ) }, //根据当前员工所在部门获取该部门及子部门员工信息 getEmployeeList() { let msg = { GroupId: this.userInfo.RB_Group_id, BranchId: '-1', DepartmentId: '-1', PostId: '-1', IsLeave: '0' } this.apipost( 'admin_get_EmployeeGetList', {}, res => { if (res.data.resultCode == 1) { this.queryCommonData.EmployeeList = res.data.data } }, err => {} ) }, //初始化公司 getCompanyList() { let msg = { Status: 0, is_show: 0, RB_Group_Id: this.userInfo.RB_Group_id } this.apipost( 'admin_get_BranchGetList', msg, res => { if (res.data.resultCode == 1) { this.queryCommonData.BranchList = res.data.data; } }, err => {} ) }, }, mounted() { this.userInfo = this.getLocalStorage(); let myDate = new Date(); let nowDate = myDate.getFullYear() + "-" + parseInt(myDate.getMonth() + 1) + "-" + myDate.getDate(); if (this.$route.query.hotelId) { this.msg.HotelId = this.$route.query.hotelId; } if (this.$route.query.dateStr) { this.msg.DateStr = this.$route.query.dateStr; } if (this.$route.query.hotelId || this.$route.query.dateStr) { this.msg.StartDate = ""; } else { this.msg.StartDate = nowDate; } if (this.userInfo.RB_Group_id == 2) { this.msg.LineId = 14; } this.getLineList(); this.getAirlineList(); this.getEmployeeList(); this.getCompanyList(); this.GetHotelList(); this.getList(); }, } </script> <style> .roomQuerySplitTrCss td { background: #eee !important; } .roomQueryTalbe { background: #ccc; } .roomQueryTalbe tr th { background: #E6E6E6; height: 40px; font-size: 12px; color: #333; } .roomQueryTalbe tr { background: #fff; text-align: center; height: 40px; } .roomQueryTalbe tr td { font-size: 12px; } .roomQueryTalbe tr td .pDateStyle { border-bottom: 1px solid #ccc; min-height: 24px; line-height: 24px; margin-top: 0; box-sizing: content-box; } .roomQueryTalbe tr td .pDateStyle:last-child { border-bottom: none; } .roomQueryTalbe tr td .pDateStyle>span:after { content: '/'; } .roomQueryTalbe tr td .pDateStyle>span:last-child:after { content: '' } .roomQueryTalbe tr td .link p:hover { text-decoration: underline; cursor: pointer; } .roomQueryTalbe tr td .phoverStype:hover { text-decoration: underline; cursor: pointer; } .roomQuery_tripDetails { padding: 0; box-shadow: 0px 1px 3px 0px #dedede; max-height: 400px; overflow-y: auto; } .roomQuery_tripDetails .popper__arrow::after { border-bottom-color: #ededed !important; } .roomQuery_tripDetails table { padding: 10px 0 0 20px; background-color: #ededed; border-collapse: collapse; border: 1px solid #d2d2d2; font-size: 12px; } .roomQuery_tripDetails table th { background-color: #ededed; padding: 5px; } .roomQuery_tripDetails table td { background-color: #ffffff; padding: 9px 15px; color: #333333; border: 1px solid #d2d2d2; } .roomQuery_tripDetails table td._d_name { background-color: #ededed; } .roomQuery_tripDetails table ._color_666 { color: #666666; } .roomQuery_tripDetails table tr._color_666 th { padding: 9px 15px; } </style>