<style> .TicketManager .el-input--prefix .el-input__inner { padding-left: 30px; } .TicketManager_list { padding: 20px 0 0 0; } .TicketManager ._ol_info { font-size: 12px; height: 100%; } .TicketManager ._ol_info._edHeight { height: 200px; } .TicketManager ._ol_color { font-size: 12px; width: 100%; margin-bottom: 20px; } .TicketManager ._ol_color li { float: left; padding: 0 15px; display: flex; align-items: center; } .TicketManager ._ol_color li ._cl { border-radius: 3px; display: inline-block; width: 5px; height: 12px; margin-right: 5px; } .TicketManager ._red { background-color: #e95252; } .TicketManager ._red_text { color: #e95252; } .TicketManager ._green { background-color: #47bf8c; } .TicketManager ._green_text { color: #47bf8c; } .TicketManager ._blu { background-color: #2aaef2; } .TicketManager ._blu_text { color: #2aaef2; } .TicketManager ._ol_list { margin-top: 20px; min-height: 500px; } .TicketManager ._ol_list>li { margin: 20px 0 0px 0px; transition: linear all 0.5s; background-color: #fff; border: 1px solid #dddddd; border-left: 0; position: relative; padding-top: 10px; } .TicketManager ._ol_list>li:hover { box-shadow: 0px 0px 20px rgba(191, 191, 191, 1); transition: all linear 0.5s; } .TicketManager ._oll_tit { color: #333333; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .TicketManager ._oll_tit span { display: inline-block; padding: 1px 10px; font-size: 12px; border: solid 1px #ff9000; color: #ff9000; border-radius: 4px; } .TicketManager ._oll_line { max-width: 5px; min-width: 5px; height: 100%; position: absolute; left: 0; top: 0; z-index: 50; background: rgba(233, 82, 82, 1); border-top-left-radius: 4px; border-bottom-left-radius: 4px; display: inline-block; } .TicketManager ._oll_line._o_green { background: #47bf8c; } .TicketManager ._oll_line._o_blu { background: #2aaef2; } .TicketManager ._oll_info { max-width: 100%; } .TicketManager ._oll_img { height: 45px; width: 45px; border-radius: 50%; margin: 5px 0 0 15px; margin-left: 20px; display: inline-block; } .TicketManager ._oll_adrr { color: white; font-size: 12px; margin-top: 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: inline-block; padding: 4px 9px; background-color: #2aaef2; border-radius: 2px; } .TicketManager ._oll_time { display: inline-block; background-color: #efefef; border-radius: 4px; color: #999999; font-size: 12px; padding: 2px 10px; margin-top: 10px; } .TicketManager ._oll_food { min-width: 64px; max-width: 64px; height: 36px; background: rgba(42, 174, 242, 1); border-radius: 4px; margin: 0 30px; color: white; line-height: 36px; text-align: center; padding: 0 10px; overflow: hidden; } .TicketManager .InfoChangeLog { max-width: 250px; height: auto; min-width: 250px; max-height: 220px; background-color: #ffffff; position: absolute; left: 0; z-index: 50; top: 70px; padding: 30px 20px 20px 0; box-shadow: 0px 0px 14px 0px #adadad; } .TicketManager .InfoChangeLog .close { color: #cccccc; cursor: pointer; position: absolute; right: 10px; top: 10px; width: 17px; height: 17px; } .wangfan { color: #2aaef2 !important; font-size: 12px !important; display: inline-block !important; padding: 4px 9px !important; background-color: white !important; border-radius: 9px !important; border: 1px solid #2aaef2 !important; width: auto !important; height: auto !important; margin-left: 0 !important; } .wangfan.hollowFixedBtn:hover { color: #ffffff; border-color: #2aaef2; background-color: #2aaef2; } .wangfan.hollowFixedBtn { cursor: pointer; } ._destination { text-align: center; padding: 0 20px 0 0; } ._destination .iconfont { color: #2aaef2; } ._destination p ._destination_line { color: #b7b7b7; position: relative; top: -3px; } ._destination p ._destination_name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 50px; display: inline-block; } ._CNY { height: 100%; display: flex; align-items: center; color: #333333; font-size: 16px; padding-left: 40px; border-left: 1px dashed #dcdfe6; min-width: 170px; } ._CNY span { color: #47bf8c; font-size: 18px; } .TMN_Seat { height: 100%; display: flex; } .TicketManager .TK_SeatList { height: 60px; background-color: #f9f9f9; padding-right: 3px; } .TicketManager .TK_SeatList>ul>li:nth-child(1) { margin-left: 5px; } .TicketManager .TK_SeatList>ul>li { float: left; text-align: center; margin: 5px 4px 0 0; } .TicketManager .TK_SeatList>ul>li:last-child { margin-right: 0; } .TicketManager .TK_SeatList .iconfont { color: #d1d1d1; display: inline-block; margin-top: 5px; } .TicketManager .TK_SeatList ._num1 { font-size: 18px; color: #333333; height: 28px; font-family: PingFangSC-Semibold, sans-serif; } .TicketManager .TK_SeatList ._num2 { font-size: 18px; color: #47bf8c; height: 28px; font-family: PingFangSC-Semibold, sans-serif; cursor: pointer; } .TicketManager .TK_SeatList ._num3 { font-size: 16px; color: #e95252; height: 28px; font-family: PingFangSC-Semibold, sans-serif; } .TK_SeatList ._wz { color: #666666; cursor: pointer; } .TK_SeatList ._yiyong { cursor: pointer; text-decoration: underline; } .TMA_raduis>ul { display: -webkit-box; align-items: center; } .TMA_raduis>ul>li {} .TMA_raduis>ul>li._head { display: flex; align-items: center; } .TMA_raduis>ul>li._head img { height: 26px; width: 26px; border-radius: 50%; margin-left: 15px; } .TMA_raduis>ul>li._head span { padding-left: 7px; display: inline-block; margin-right: 25px; } ._jztime { color: #666666; margin: 0 12px; } ._jztime .PingFangSC { font-size: 12px; } ._jztime ._text { font-size: 12px; } ._btn .hollowFixedBtn { padding: 6px 11px; width: 60px; margin-right: 10px; font-size: 12px; } .addTicketManager { overflow: hidden; display: none; overflow: auto; z-index: 999; position: fixed; min-width: 1200px; bottom: 0; border-top: 3px solid #38425d; background-color: #f9f9f9; left: 50px; padding: 10px; } .edHeight { display: block; } ._add_t { padding-left: 10px; border-left: 3px solid #e95252; color: #333; font-size: 16px; font-family: "PingFangSC-Fine"; height: 30px; line-height: 30px; } .top-btn { text-align: right; position: absolute; top: 10px; right: 10px; } ._add_sel { padding: 10px 15px 0 15px; border-bottom: 1px dashed #dadada; } .TicketManager .el-pagination { border: none !important; } ._add_sel>ul>li { margin-right: 15px; float: left; } ._add_sel>ul>li input, ._add_ret>ul>li input { height: 30px; } ._add_ret>ul>li { margin-bottom: 20px; } ._add_sel_t { color: #6666; font-size: 12px; padding: 8px 0; } ._add_hangban { padding: 0px 15px; border-bottom: 1px dashed #dadada; } ._add_hangban>li { float: left; display: -webkit-box; padding: 20px 0; overflow: auto; } ._add_hangban>li>div { margin-right: 20px; } ._add_hangban>li:nth-child(2) { border-left: 1px dashed #dadada; padding-left: 10px; } ._add_go { display: flex; } ._add_go>span { font-size: 14px; color: #000000; padding-right: 15px; } ._add_go>div { font-size: 12px; color: #666666; background-color: #e0f4ff; width: 230px; height: 175px; border-radius: 4px; } ._add_go>div>p:nth-child(1) { padding: 0 13px; color: #387ea5; background-color: #cbe9fa; height: 34px; line-height: 34px; } ._add_go>div>p:nth-child(1) .icon-xingzhuang { float: right; font-size: 12px; margin-top: 2px; cursor: pointer; } ._add_go>div>p:nth-child(1) .icon-xingzhuang:hover { color: #e95252; } ._add_info { margin-top: 12px; padding: 0 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } ._add_hbh { padding: 0 0 0 10px; margin-top: 14px; display: inline-block; } ._add_hbh em { font-style: normal; display: inline-block; width: 55px; text-align: right; } ._add_hbh .el-input--prefix .el-input__icon { line-height: 20px !important; } ._add_hbh .el-input--prefix .el-icon-date { display: none; } ._add_hbh .el-select, ._add_hbh .el-input .el-input__inner, ._add_hbh .el-select .el-input { height: 30px; font-size: 12px; border-color: #5395b9 !important; } ._add_go .el-input .el-input__inner { height: 30px; } ._add_hbh .el-select .el-input .el-select__caret { color: #5395b9 !important; } ._add_hbh .el-select .el-input.is-focus .el-input__inner { border-color: #5395b9 !important; } ._add_hbh .el-select-dropdown__item.selected { background: #5395b9 !important; } ._add_hbh .el-select-dropdown__item { height: 20px !important; line-height: 20px !important; } ._add_hbh .el-select-dropdown__item span { line-height: 20px !important; } ._add_date input { padding-left: 15px !important; padding-right: 15px !important; } .TicketManager ._add_btn { float: right; display: inline-block; color: #b7ddf2; background-color: #5294b8; padding: 1px 5px; border-radius: 10px; cursor: pointer; line-height: 16px; margin-top: 8px; } ._add_ret { padding: 10px 0 0 0; } ._add_ret li { float: left; margin-right: 15px; } ._add_ret li em { font-size: 12px; color: #6666; font-style: normal; width: 80px; display: inline-block; text-align: right; } ._add_ret li._add_saveBtn { float: right; margin-top: 8px; } ._command_tb { width: -webkit-fill-available; margin-top: 10px; text-align: left; } ._command_tb tr:first-child { background-color: #cbe9fa; } ._command_tb tr th { font-size: 12px; color: #387ea5; padding: 8px; } ._command_tb tr td:first-child { color: #387ea5; } ._command_tb tr td { color: #333333; padding: 8px; font-size: 12px; background-color: #e0f4ff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } ._command_tb thead, ._command_tb tbody tr { display: table; width: 100%; table-layout: fixed; } ._tripDetails { padding: 0; box-shadow: 0px 1px 3px 0px #dedede; } ._tripDetails .popper__arrow::after { border-bottom-color: #ededed !important; } ._tripDetails table { padding: 10px 0 0 20px; background-color: #ededed; border-collapse: collapse; border: 1px solid #d2d2d2; font-size: 12px; } ._tripDetails table th { background-color: #ededed; padding: 5px; } ._tripDetails table td { background-color: #ffffff; padding: 9px 15px; color: #333333; border: 1px solid #d2d2d2; } ._tripDetails table td._d_name { background-color: #ededed; } ._tripDetails table ._color_666 { color: #666666; } ._tripDetails table tr._color_666 th { padding: 9px 15px; } ._trip_CNY { width: auto !important; padding: 10px !important; background-color: #ffffff; } ._trip_CNY table { background-color: #ededed; border-collapse: collapse; } ._trip_CNY table ._rb_bor { border-right: 1px dashed #d3d3d3; border-bottom: 1px dashed #d3d3d3; } ._trip_CNY table ._lb_bor { border-right: 1px dashed #d3d3d3; border-top: 1px dashed #d3d3d3; } ._trip_CNY table ._rt_bor { border-left: 1px dashed #d3d3d3; border-bottom: 1px dashed #d3d3d3; } ._trip_CNY table ._lt_bor { border-left: 1px dashed #d3d3d3; border-top: 1px dashed #d3d3d3; } ._trip_CNY table td { padding: 15px; text-align: left; } ._trip_CNY table td ._CNY_name { display: inline-block; width: 21px; height: 21px; font-size: 12px; color: #ffffff; background-color: #2aaef2; line-height: 21px; text-align: center; border-radius: 50%; } ._trip_CNY table td ._CNY_num { color: #333333; position: relative; top: 2px; } ._CNY p { color: #333333; cursor: pointer; text-decoration: underline; font-size: 14px; } ._allWidth>span { padding-right: 10px; } ._add_go_label { padding-right: 15px; } .commandLine { width: 100%; padding: 2px 5px; background-color: #333333; display: flex; color: white; } .commandLine .cmd_input { width: 100%; background-color: #333333; } .commandLine .cmd_input .el-textarea__inner { background-color: #333333; border: none; font-size: 12px; color: white; padding-left: 5px; } .TicketManager .InfoChangeLog .changLog { background-color: #f9f9f9; height: auto; max-height: 170px; width: 100%; overflow: auto; } .TicketManager .InfoChangeLog .changLog ul { margin-left: 20px; } .TicketManager .InfoChangeLog .changLog li { border-left: 1px solid #e9e9e9; position: relative; padding-bottom: 15px; padding-left: 20px; } .TicketManager .InfoChangeLog .changLog li p { text-align: left; } .TicketManager .InfoChangeLog .changLog li .radius { width: 7px; height: 7px; border-radius: 50%; display: inline-block; position: absolute; left: -4px; top: 4px; } .TicketManager .InfoChangeLog .changLog li.red .radius { background-color: #e95252; } .TicketManager .InfoChangeLog .changLog li.green .radius { background-color: #47bf8c; } .TicketManager .InfoChangeLog .time { color: #666666; padding-bottom: 5px; } .TicketManager .InfoChangeLog .changLog::-webkit-scrollbar, .TicketManager ._ol_info::-webkit-scrollbar, .addTicketManager::-webkit-scrollbar, ._add_hangban>li::-webkit-scrollbar, .Journal .changLogList::-webkit-scrollbar { width: 4px; height: 8px; } .TicketManager .InfoChangeLog .changLog::-webkit-scrollbar-thumb, .TicketManager ._ol_info::-webkit-scrollbar-thumb, .addTicketManager::-webkit-scrollbar-thumb, ._add_hangban>li::-webkit-scrollbar-thumb, .Journal .changLogList::-webkit-scrollbar-thumb { /*滚动条里面小方块*/ border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } .TicketManager .InfoChangeLog .changLog::-webkit-scrollbar-track, .TicketManager ._ol_info::-webkit-scrollbar-track, .addTicketManager::-webkit-scrollbar-track, ._add_hangban>li::-webkit-scrollbar-track, .Journal .changLogList::-webkit-scrollbar-track { /*滚动条里面轨道*/ -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } .TicketManager _btn i { color: #fff !important; } ._command_tb tbody::-webkit-scrollbar { width: 4px; height: 8px; } ._command_tb tbody::-webkit-scrollbar-thumb { border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } ._command_tb tbody::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } ._delete_cmd { cursor: pointer; } ._delete_cmd:hover { color: red; } .TicketManager .el-form-item__label { font-size: 12px; color: #606266; } ._pingtai .el-select .el-input { height: auto; } ._pingtai .el-form-item, ._add_ret>ul>li .el-form-item { display: flex; } ._add_sel ul li .el-form-item { margin-bottom: 0; } .TicketManager .upload-demo { text-align: center; } .TicketManager .query-box ul .el-input { width: 150px; } .wangfan_dan { padding: 2px 9px !important; } /*审核成功*/ ._bg_gre { background-color: #47bf8c !important; color: white !important; cursor: pointer; width: 24px; height: 24px; text-align: center; line-height: 24px; border-radius: 50%; } /*默认*/ .bg_default { cursor: pointer; background-color: #bcbcbc !important; color: #909090 !important; cursor: pointer; width: 24px; height: 24px; text-align: center; line-height: 24px; border-radius: 50%; } /*审核中*/ .bg_auditing { background-color: #3867d6 !important; color: white; cursor: pointer; width: 24px; height: 24px; text-align: center; line-height: 24px; border-radius: 50%; } .TicketManager .width_auto { width: 80%; } .TicketManager ._rizhi { background: #fff !important; color: #e95252 !important; height: 30px !important; border: 1px solid #e95252 !important; cursor: pointer !important; border-radius: 15px !important; } .TicketManager .Journal { width: 250px !important; } .Journal .InfoChangeLog { height: auto; max-height: 220px; background-color: #ffffff; } .Journal .changLogList { padding-left: 20px; max-height: 220px; overflow: auto; margin: 20px 0; } .Journal .changLogList_l { border-left: 1px solid #e9e9e9; position: relative; padding-bottom: 15px; padding-left: 20px; } .Journal .changLogList_l:last-child { border: 0; } .Journal .changLog_time { color: #666666; position: relative; top: -4px; } .Journal .TM_UPdate { font-size: 12px; } .TicketManager .downBtn { padding: 6px 20px; position: relative; top: -1px; } .TicketManager .icon-img_plane { font-size: 12px; -webkit-transform: scale(0.8); } .TicketManager .departName { text-align: right; } .TicketManager .arrivalName { text-align: left; } .TicketManager ._destination .el-button:focus { background-color: #2aaef2 !important; color: #fff !important; } .TicketManager .travelTo { position: relative; top: -2px; } .TicketManager .icon-arrow1 { font-size: 12px; position: relative; top: 4%; } .TicketManager .multiple_input .el-input { height: auto !important; } .TicketManager .el-button--primary { padding: 5px; margin-right: 1px; } .TicketManager .addTicketManager::-webkit-scrollbar { /*滚动条整体样式*/ width: 4px; /*高宽分别对应横竖滚动条的尺寸*/ height: 8px; } .TicketManager .addTicketManager::-webkit-scrollbar-thumb { /*滚动条里面小方块*/ border-radius: 4px; -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); background: #c9c9c9; } .TicketManager .addTicketManager::-webkit-scrollbar-track { /*滚动条里面轨道*/ -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.2); border-radius: 4px; background: #ededed; } .Journal ._radius_green { width: 7px; height: 7px; border-radius: 50%; display: inline-block; position: absolute; left: -4px; top: 0; } .disClick { background-color: #d1d1d1; color: #fff; border: 1px solid #d1d1d1; } .disClick:hover { background-color: #d1d1d1 !important; cursor: default !important; box-shadow: none !important; } .TM_OrderRemind { font-size: 12px; color: #e95252; margin: 5px 0 0 0; } .TicketManager ._lian_style { position: absolute; top: 0px; left: 5px; z-index: 99; display: inline-block; background-color: #e83140; color: white; padding: 2px 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; } .TicketManager .el-date-editor.el-input, .TicketManager .el-date-editor.el-input__inner { width: 100%; } .TicketManager .addTicketManager .el-select { width: 100%; } ._oll_img_box { height: 78px; display: inline-block; vertical-align: top; padding-top: 14px; } .TicketManager .vmiddle { display: flex; align-items: Center; } .Plan_Query .el-button--primary { background-color: #fff !important; color: #e95252 !important; border-color: #e95252 !important; } .Plan_Query .el-button--primary:focus, .TC_ListContent .el-button--primary:hover { background-color: #fff !important; color: #e95252 !important; border-color: #e95252 !important; } .Plan_Query .el-button { border-radius: 16px; width: 90px; height: 30px; line-height: 26px; } .Plan_Query .el-button i { color: #e95252; } .Plan_Query .el-dropdown { position: relative; top: 4px; } .Plan_Query .el-button span { position: relative; top: -3px; } .TicketManager .el-dropdown-menu__item:hover { background-color: #e95252 !important; color: #fff !important; } .TMA_PNR { font-size: 12px; color: #666666; margin: 5px 0 0 16px; } .TicketManager .TICK_Code { position: absolute; left: 27px; top: 0; } .TicketManager .TCID_cont { min-height: 28px; border-top: 1px dashed #ccc; } .Ticket_TCID { margin: 5px 25px 5px 0; display: inline-block; } /*航班详情*/ .TicketManager .FlightDivDetailsTM { width: 100%; /* overflow: auto; */ } .TicketManager ._flightList { text-align: left; font-size: 12px; margin-bottom: 5px; padding-right: 5px; } /*航班号*/ .TicketManager .FlightNumber { color: #ff0066; font-weight: bold; } .TicketManager .el-button-group i { font-size: 13px; } .FinaceDanList { display: block; cursor: pointer; } .FinaDetailContentTM { /* height: 25px; */ /* overflow: auto; */ } .TicketManager .TK_raduis ul li { margin-left: 10px; float: left; display: inline-block; min-width: 35px; } .TicketManager .TK_raduis ul { display: inline-block; } .FinaceDanList { cursor: pointer; } .teamTitle { text-indent: 10px; min-height: 28px; border-top: 1px solid #ccc; line-height: 28px; } .MyTicketManager .el-checkbox { margin-left: 30px; } .MyTicketManager .picload { width: 138px; height: 92px; border-radius: 2px; cursor: pointer; margin-bottom: 10px; padding: 5px; margin-right: 10px; position: relative; } .MyTicketManager .picload .el-upload { width: 138px; height: 92px; } .MyTicketManager .picload .el-upload-dragger { width: 100%; height: 100%; } .MyTicketManager ._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; } .MyTicketManager ._addUpload_box .icon-excel, .MyTicketManager ._addUpload_box .icon-pdf { text-align: center; font-size: 38px; color: green; line-height: 75px; } .MyTicketManager ._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; } .MyTicketManager .TM_line { width: 100%; height: 1px; border-bottom: 1px dashed #d1d1d1; margin: 5px 0; } </style> <template> <div class="flexOne TicketManager MyTicketManager"> <div class="query-box Plan_Query"> <ul> <li> <span> <em>状态</em> <el-select v-model="msg.FlyState" :placeholder="$t('system.ph_in')" class="w120"> <el-option label="未起飞" value="0"></el-option> <el-option label="已起飞" value="1"></el-option> </el-select> </span> </li> <li> <span> <em>{{$t('advmanager.v_line')}}</em> <el-select v-model="msg.LineId" :placeholder="$t('pub.pleaseSel')" class="w120"> <el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option> <el-option v-for="item in LineList" :key="item.LineID" :label="item.LineName" :value="item.LineID"> </el-option> </el-select> </span> </li> <li> <span class="hotel_name"> <em>航空公司</em> <el-select v-model="msg.AirLineID" filterable :placeholder="$t('system.ph_in')" class="w120"> <el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option> <el-option v-for="item in airlineList" :label="item.AlName" :value="item.AirLineId" :key="item.AirLineId"> </el-option> </el-select> </span> </li> <li> <span> <em>航班日期</em> <el-date-picker class="w135" v-model="msg.QFlightDateStart" type="date" :picker-options="beforeCheck" value-format="yyyy-MM-dd" :placeholder="$t('admin.admin_choDate')"> </el-date-picker> <span class="_ln">-</span> <el-date-picker class="w135" v-model="msg.QFlightDateEnd" type="date" :picker-options="afterCheck" value-format="yyyy-MM-dd" :placeholder="$t('admin.admin_choDate')"></el-date-picker> </span> </li> <li> <span> <em>操作人</em> <el-select v-model="msg.CreateBy" filterable :placeholder="$t('system.ph_in')" class="w120" clearable> <el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option> <el-option v-for="item in EmployeeList" :label="item.EmName" :value="item.EmployeeId" :key="item.EmployeeId"></el-option> </el-select> </span> </li> <li> <span> <em>编号</em> <el-input v-model="msg.ID" placeholder="机票编号" @keyup.native="checkInteger(msg,'ID')"></el-input> </span> </li> <li> <span> <em>定金类型</em> <el-select v-model="msg.DepositType" filterable :placeholder="$t('system.ph_in')" class="w120"> <el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option> <el-option v-for="item in DepositTypeArray" :label="item.Name" :value="item.Id" :key="item.Id"> </el-option> </el-select> </span> </li> <li> <span> <em>出发地</em> <el-select v-model="msg.Departure_city" filterable :placeholder="$t('system.ph_in')" class="w120"> <el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option> <el-option v-for="item in ChinaCityList" :label="item.Name" :value="item.ID" :key="item.ID"> </el-option> </el-select> </span> </li> <!-- <li> <span> <em>机票类型</em> <el-select v-model="msg.SellType" filterable :placeholder="$t('system.ph_in')" class="w120"> <el-option :label="$t('pub.unlimitedSel')" :value="-1"></el-option> <el-option label="团队使用" :value="0"></el-option> <el-option label="单卖机票" :value="1"></el-option> </el-select> </span> </li> --> <li> <span> <em>团票/散票</em> <el-select v-model="msg.TravelTicketType" filterable :placeholder="$t('system.ph_in')" class="w120"> <el-option :label="$t('pub.unlimitedSel')" :value="0"></el-option> <el-option label="团票" :value="1"></el-option> <el-option label="散票" :value="2"></el-option> </el-select> </span> </li> <li> <span> <em>开票状态</em> <el-select v-model="msg.IsSelectInvoicing" :placeholder="$t('pub.pleaseSel')" class="w120"> <el-option v-for="item in maintenanceList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </span> </li> <li> <span> <em>团期状态</em> <el-select v-model="msg.IsNoTCID" :placeholder="$t('pub.pleaseSel')" class="w120"> <el-option :label="$t('pub.unlimitedSel')" :value="0"></el-option> <el-option label="未绑定团期" :value="1"></el-option> <el-option label="有机损的取消团期" :value="2"></el-option> </el-select> </span> </li> <li style="margin-right:50px;"> <button class="normalBtn" type="button" @click="resetPageIndex(),getList()">{{$t('pub.searchBtn')}}</button> <button class="normalBtn" type="button" @click="addShow=true,command=false,sanmai=false,initAddMsg()"> {{$t('pub.addBtn')}} </button> <button class="hollowFixedBtn" type="button" @click="command=true,addShow=false,sanmai=false,initAddMsg()"> {{$t('Airticket.Air_orderImport')}} </button> <el-dropdown @command="getImport"> <el-button type="primary"> 导入 <i class="el-icon-arrow-down el-icon--right"></i> </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item command="1">一般模板导入</el-dropdown-item> <el-dropdown-item command="2">多航段模板导入</el-dropdown-item> </el-dropdown-menu> </el-dropdown> <el-dropdown @command="getDownLoad"> <el-button type="primary"> 下载模板 <i class="el-icon-arrow-down el-icon--right"></i> </el-button> <el-dropdown-menu slot="dropdown" style="width:150px;"> <el-dropdown-item @click.native="DownLoad(1)">一般模板</el-dropdown-item> <el-dropdown-item @click.native="DownLoad(2)">多航段模板</el-dropdown-item> </el-dropdown-menu> </el-dropdown> </li> </ul> </div> <div class="TicketManager_list"> <ul class="_ol_color clearfix"> <li> <span class="_red _cl"></span> <span class="_red_text">{{$t('Airticket.Air_redType')}}:</span> {{$t('Airticket.Air_firstClass')}} </li> <li> <span class="_green _cl"></span> <span class="_green_text">{{$t('Airticket.Air_greenType')}}:</span> {{$t('Airticket.Air_businessClass')}} </li> <li> <span class="_blu _cl"></span> <span class="_blu_text">{{$t('Airticket.Air_blueType')}}:</span> {{$t('Airticket.Air_EconomyClass')}} </li> <li> <span style="color:#4BCA81 ;">√:</span> <span>全部出票</span> </li> <li> <span style="color: #E95252;">O:</span> <span> 已出中段/部分出票</span> </li> <li> <span style="color:#E95252 ;">X:</span> <span>未处理</span> </li> </ul> <div class="_ol_info" :class="addShow==true||command==true?'_edHeight':''"> <ul class="_ol_list" v-loading="loading"> <li v-for="(item,index) in dataList" :data-id="item.ID" :key="index"> <span class="_oll_line" v-if="item.FreightSpace==1"></span> <span class="_oll_line _o_green" v-if="item.FreightSpace==2"></span> <span class="_oll_line _o_blu" v-if="item.FreightSpace==3"></span> <el-row :gutter="10"> <el-col :span="2"> <span class="_lian_style" v-if="item.SellType==1">单卖机票</span> <span class="_lian_style" v-if="item.IsSetUnion==1">联</span> <div class="_oll_img_box"> <span class="TICK_Code PingFangSC">编号:{{item.ID}} </span> <img v-if="!item.AirlineUrl" class="_oll_img" :src="defaultImg"> <img v-else class="_oll_img" :src="item.AirlineUrl" :onerror="defaultImg"> </div> </el-col> <el-col :span="2" class="vmiddle" style="width:85px;"> <div class="_oll_info"> <el-tooltip class="item" effect="dark" :content="item.AirlineName" placement="top-start" popper-class="max-w250"> <p class="_oll_tit">{{item.AirlineName}}</p> </el-tooltip> <span class="_oll_adrr">{{item.FreightSpaceStr}}</span> </div> </el-col> <el-col :span="4" class="vmiddle"> <div class="FlightDivDetailsTM"> <div class="_flightList" v-for="(subItem,subIndex) in item.flightList" :key="subIndex"> <span class="FlightNumber">{{subItem.Flight_number}}</span> <span>{{subItem.FlightDate}} {{subItem.Departure_time}}</span> <span>({{subItem.DIATA}}){{subItem.DepartureName}}</span> <span v-if="subItem.StopoverName">-</span> <span v-if="subItem.StopoverName">({{subItem.StopoverIATA}}){{subItem.StopoverName}}</span> <span v-if="subItem.ArrivalCityName">-</span> <span v-if="subItem.ArrivalCityName">({{subItem.AIATA}}){{subItem.ArrivalCityName}}</span> </div> </div> </el-col> <el-col :span="5" class="vmiddle"> <div class="TMN_Seat"> <div class="TK_SeatList"> <ul class="clearfix"> <li> <span class="iconfont icon-img_yizi"></span> </li> <li> <p class="_num3">{{item.TicketNum==null?'0':item.TicketNum}}</p> <p class="_wz">{{$t('Airticket.Air_reservation')}}</p> </li> <li> <p :class="{'_num3':item.ConfigUnionCount!=item.UnionCount,'_num2':item.ConfigUnionCount==item.UnionCount}"> {{item.UnionCount}}</p> <el-popover popper-class="_tripDetails" width="700"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr class="_color_666"> <th>联运城市</th> <th width="100" style="width: 100px">订单号</th> <th>联运数量</th> <th>已配数量</th> <th>是否住宿</th> <th>联运备注</th> <th>票务备注</th> </tr> <tr v-for="(unionItem,x) in item.UnionDetailList" :key="x"> <td>{{unionItem.UnionCityName}}</td> <td>{{unionItem.UnionOrderIds}}</td> <td>{{unionItem.UnionGuestCount}}</td> <td>{{unionItem.UnionConfigNum}}</td> <td> <span v-if="unionItem.IsStay==1" class="_num3">是</span> <span v-else>否</span> </td> <td>{{unionItem.UnionRemark}}</td> <td>{{unionItem.Notes}}</td> </tr> </table> <p slot="reference" class="_wz _yiyong">联运</p> </el-popover> </li> <li> <p class="_num3">{{item.OrderTotalNum}}</p> <p class="_wz">报名人数</p> </li> <li> <p class="_num3">{{item.UseScatterNum}}/{{item.AirTicketScatterNum }}</p> <p class="_wz">已卖/总数</p> </li> <li> <p class="_num3">{{item.SurplusNum}}</p> <p class="_wz">可散卖</p> </li> <li> <p class="_num3">{{item.OutTicketPercent}} %</p> <p class="_wz">出票百分比</p> </li> </ul> </div> </div> </el-col> <el-col :span="1"> <div> <ul> <!--出票状态--> <li style="font-size:18px;"> <span style="color: #4BCA81;" v-if="item.TicketState==1">√</span> <span class="colorE95252" v-else>{{item.TicketState=='0'?"x":"O"}}</span> </li> </ul> </div> </el-col> <template v-if="item.SellType==1"> <el-col :span="4" class="vmiddle"> <div class="TK_raduis"> <ul> <li style="margin:4px 0 0 0;min-width:10px;color:green;">收</li> <!--一定--> <li v-if="item.FirstDeposit!=''"> <div @click="goFinacePageOne(item,1,1)" :class="getClass(item.FirstDepositStatus)"> <el-tooltip effect="dark" :content="item.FirstDeposit" placement="top" popper-class="max-w250"> <span>1</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.Revice_FirstAuditList!=null" v-for="(childItem,childIndex) in item.Revice_FirstAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--二定--> <li v-if="item.SecondDeposit!=''"> <div @click="goFinacePageOne(item,2,1)" :class="getClass(item.SecondDepositStatus)"> <el-tooltip effect="dark" :content="item.SecondDeposit" placement="top" popper-class="max-w250"> <span>2</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.Recive_SecondAuditList!=null" v-for="(childItem,childIndex) in item.Recive_SecondAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--三定--> <li v-if="item.ThirdDeposit!=''"> <div @click="goFinacePageOne(item,3,1)" :class="getClass(item.ThirdDepositStatus)"> <el-tooltip effect="dark" :content="item.ThirdDeposit" placement="top" popper-class="max-w250"> <span>3</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.Recive_ThirdAuditList!=null" v-for="(childItem,childIndex) in item.Recive_ThirdAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--四定--> <li v-if="item.FourthDeposit!=''"> <div @click="goFinacePageOne(item,4,1)" :class="getClass(item.FourthDepositStatus)"> <el-tooltip effect="dark" :content="item.FourthDeposit" placement="top" popper-class="max-w250"> <span>4</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.Recive_FourthAuditList!=null" v-for="(childItem,childIndex) in item.Recive_FourthAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--尾款--> <li v-else-if="item.FinalPayment!=''"> <div @click="goCustomList('PassengerList',item, 5,'旅客名单')" :class="getClass(item.FinalPaymentStatus)"> <el-tooltip effect="dark" :content="item.FinalPayment" placement="top" popper-class="max-w250"> <span>尾</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.Revice_FinalAuditList!=null" v-for="(childItem,childIndex) in item.Revice_FinalAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> </ul> <div class="TM_line"></div> <ul> <li style="margin:4px 0 0 0;min-width:10px;color:red;">支</li> <!--一定--> <li v-if="item.FirstDeposit!=''"> <div @click="goFinacePageOne(item,1)" :class="getClass(item.FirstDepositStatus)"> <el-tooltip effect="dark" :content="item.FirstDeposit" placement="top" popper-class="max-w250"> <span>1</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.FirstAuditList!=null" v-for="(childItem,childIndex) in item.FirstAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--二定--> <li v-if="item.SecondDeposit!=''"> <div @click="goFinacePageOne(item,2)" :class="getClass(item.SecondDepositStatus)"> <el-tooltip effect="dark" :content="item.SecondDeposit" placement="top" popper-class="max-w250"> <span>2</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.SecondAuditList!=null" v-for="(childItem,childIndex) in item.SecondAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--三定--> <li v-if="item.ThirdDeposit!=''"> <div @click="goFinacePageOne(item,3)" :class="getClass(item.ThirdDepositStatus)"> <el-tooltip effect="dark" :content="item.ThirdDeposit" placement="top" popper-class="max-w250"> <span>3</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.ThirdAuditList!=null" v-for="(childItem,childIndex) in item.ThirdAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--四定--> <li v-if="item.FourthDeposit!=''"> <div @click="goFinacePageOne(item,4)" :class="getClass(item.FourthDepositStatus)"> <el-tooltip effect="dark" :content="item.FourthDeposit" placement="top" popper-class="max-w250"> <span>4</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.FourthAuditList!=null" v-for="(childItem,childIndex) in item.FourthAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--尾款--> <li v-else-if="item.FinalPayment!=''"> <div @click="goCustomList('PassengerList',item, 5,'旅客名单')" :class="getClass(item.FinalPaymentStatus)"> <el-tooltip effect="dark" :content="item.FinalPayment" placement="top" popper-class="max-w250"> <span>尾</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.FinalAuditList!=null" v-for="(childItem,childIndex) in item.FinalAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> </ul> </div> </el-col> </template> <template v-else> <el-col :span="4" class="vmiddle"> <div class="TK_raduis"> <ul> <!--一定--> <li v-if="item.FirstDeposit!=''"> <div @click="goFinacePage(item,1)" :class="getClass(item.FirstDepositStatus)"> <el-tooltip effect="dark" :content="item.FirstDeposit" placement="top" popper-class="max-w250"> <span>1</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.FirstAuditList!=null" v-for="(childItem,childIndex) in item.FirstAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--二定--> <li v-if="item.SecondDeposit!=''"> <div @click="goFinacePage(item,2)" :class="getClass(item.SecondDepositStatus)"> <el-tooltip effect="dark" :content="item.SecondDeposit" placement="top" popper-class="max-w250"> <span>2</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.SecondAuditList!=null" v-for="(childItem,childIndex) in item.SecondAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--三定--> <li v-if="item.ThirdDeposit!=''"> <div @click="goFinacePage(item,3)" :class="getClass(item.ThirdDepositStatus)"> <el-tooltip effect="dark" :content="item.ThirdDeposit" placement="top" popper-class="max-w250"> <span>3</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.ThirdAuditList!=null" v-for="(childItem,childIndex) in item.ThirdAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--四定--> <li v-if="item.FourthDeposit!=''"> <div @click="goFinacePage(item,4)" :class="getClass(item.FourthDepositStatus)"> <el-tooltip effect="dark" :content="item.FourthDeposit" placement="top" popper-class="max-w250"> <span>4</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.FourthAuditList!=null" v-for="(childItem,childIndex) in item.FourthAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> <!--尾款--> <li v-else-if="item.FinalPayment!=''"> <div @click="goCustomList('PassengerList',item, 5,'旅客名单')" :class="getClass(item.FinalPaymentStatus)"> <el-tooltip effect="dark" :content="item.FinalPayment" placement="top" popper-class="max-w250"> <span>尾</span> </el-tooltip> </div> <div class="FinaDetailContentTM"> <span v-if="item.FinalAuditList!=null" v-for="(childItem,childIndex) in item.FinalAuditList" :key="childIndex"> <span class="FinaceDanList" @click="goFinaceDetails(childItem.FinaceId)">{{childItem.FinaceId}}</span> </span> </div> </li> </ul> </div> </el-col> </template> <el-col :span="1" class="vmiddle"> <div class="TMA_raduis"> <ul style="padding:0;"> <li class="_head" style="display:block"> <img style="margin-left:0px" v-if="item.CreateUrl" :src="item.CreateUrl" :onerror="defaultImg"> <img style="margin-left:0px" v-else src="../../assets/img/bg_z1@2x.png"> <span style="padding:0;margin:0;display:block;">{{item.CreateName}}</span> </li> </ul> </div> </el-col> <el-col :span="2" class="vmiddle"> <div class="_jztime"> <p class="PingFangSC">{{item.TicketDeadlineStr}}</p> <p class="_text">{{$t('Airticket.Air_deadTicketTime')}}</p> <p class="_text cursor-p" style="padding: 5px 0 0 0;" v-if="item.InvoicingPrice>0" @click="BillingCharge(item,1)"> ¥{{item.InvoicingPrice}} <br />开票收入 </p> </div> </el-col> <el-col :span="3" class=""> <div> <el-button-group size="mini"> <el-tooltip class="item" effect="dark" :content="$t('system.table_edit')" placement="top-start"> <el-button type="primary" icon="iconfont icon-Edit" @click="getEntityExtend(item.ID)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="旅客名单" placement="top-start"> <el-button type="primary" icon="iconfont icon-lists" @click="goUrl('PassengerList',item,'旅客名单')"> </el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="联运设置" placement="top-start" style="display:none;"> <el-button type="primary" icon="iconfont icon-ico_shezhi" @click="goUrl('ThroughSetting',item,'联运设置')" style="margin-left:0;"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="primary" icon="iconfont icon-img_delete_small" @click="DeleteAirticket(item.ID)" style="margin-left:0;"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="item.TripItinerary==''?'行程单上传':'行程单下载'" placement="top-start"> <el-button v-if="item.TripItinerary==''" type="primary" icon="iconfont icon-upload" style="margin-left:0;" @click="outerVisible1=true,UploadItineraryMsg.ID=item.ID"></el-button> <el-button v-else type="primary" icon="iconfont icon-xiazai2" style="margin-left:0;" @click="DownLoad(3,item.TripItinerary)"></el-button> </el-tooltip> <!-- <el-tooltip class="item" effect="dark" content="散卖" placement="top-start"> <el-button type="primary" icon="iconfont icon-maichu" @click="sanSale(item)"></el-button> </el-tooltip> --> <template v-if="item.PriceList&&item.PriceList.length==0"> --> <el-tooltip class="item" effect="dark" content="生成虚拟团" placement="top-start"> <el-button type="primary" icon="iconfont icon-maichu" @click="createTravel(item)"></el-button> </el-tooltip> </template> <el-tooltip class="item" effect="dark" content="机票单据转移" placement="top-start"> <el-button type="primary" icon="iconfont icon-gengduo1" @click="OpenFindig(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('fnc.rizhi')" placement="top-start"> <el-popover popper-class="Journal" width="400" trigger="click"> <div class="InfoChangeLog"> <div class="changLog"> <ul v-if="orderlogList.length!=0" class="changLogList"> <li v-for="(item,index) in orderlogList" class="changLogList_l" :key="index"> <span class="_radius_green" :style="item.EndValue>item.StartValue?'background-color: #47BF8C':'background-color: #E95252'"></span> <p class="changLog_time">{{item.UpdateDateStr}}</p> <p class="TM_UPdate">{{item.UpdateName}} {{item.UpdateTypeStr}}</p> </li> </ul> <ul v-else> <li>{{$t('hotel.hotel_zanwu')}}</li> </ul> </div> </div> <el-button type="primary" slot="reference" icon="iconfont icon-rizhi" @click="InfoChangeLogShow(item.ID)"></el-button> </el-popover> </el-tooltip> <!-- <el-tooltip class="item" effect="dark" content="机票服务费" placement="top-start"> <el-button type="primary" icon="iconfont icon-caidan-fill" @click="TikcetServiceCharge(item)"> </el-button> </el-tooltip> --> <el-tooltip class="item" effect="dark" content="开票费用" placement="top-start" v-if="item.isBillingCharge"> <el-button type="primary" icon="iconfont icon-caidan-fill" @click="BillingCharge(item)"> </el-button> </el-tooltip> </el-button-group> </div> <div style="margin-top:5px;"> <el-button-group size="mini"> <el-tooltip class="item" effect="dark" content="部分出票" placement="top-start" v-show="item.TicketState==0"> <el-button type="primary" class="iconfont icon-icon_status-half-dot" @click="UpdateTicketState(item.ID,3)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="已出中段" placement="top-start" v-show="item.TicketState==0"> <el-button type="primary" class="iconfont icon-zhongzhuan" @click="ZhongDuanPNR = true, ZhongDuanID= item.ID"> </el-button> </el-tooltip> <el-tooltip class="item" effect="dark" content="出票完成" placement="top-start" v-show="item.TicketState!=1"> <el-button type="primary" class="iconfont icon-duigou" @click="UpdateTicketState(item.ID,1)"> </el-button> </el-tooltip> </el-button-group> </div> </el-col> </el-row> <el-row> <span style="padding-left:10px;" title="国际段">行程天数: <span style="color:#ff0066;font-weight:bold">{{item.DayNum}} 天</span> </span> <span v-if="Number(item.B2BPrice)<Number(item.CostPrice) || Number(item.B2BPrice)==Number(item.CostPrice) || Number(item.B2CPrice)<Number(item.CostPrice)|| Number(item.B2CPrice)==Number(item.CostPrice)" style="margin-left:10px;color:red">小程序价格未维护</span> <span v-if="item.TravelTicketType && item.TravelTicketType>0" style="margin-left:20px;color:deepskyblue"> {{item.TravelTicketType==1?'团票':item.TravelTicketType==2?'散票':''}} </span> </el-row> <el-row :gutter="0"> <el-col :span="1"> <div class="teamTitle">团期:</div> </el-col> <el-col :span="15"> <div class="TCID_cont PingFangSC"> <span v-show="item.PriceList==null ||item.PriceList.length==0">暂无</span> <span class="Ticket_TCID" v-for="(subItem,subIndex) in item.PriceList" :key="subIndex"> <a style="color:blue;cursor:pointer" @click='goUrlT("RegistrationList",subItem.TCID,"报名清单")'> ({{subItem.TCID}}){{subItem.TCNUM}} </a> <a style="color:red;cursor:pointer;" @click="goUrlTicketUnion(subItem.TCID,item.ID)">设置联运</a> <a style="cursor:pointer;" @click="goFinaceDetails(subItem.FinanceId)" v-if="subItem.FinanceId"> (折让单: <span style="color: blue;">{{subItem.FinanceId}}</span>) </a> </span> </div> </el-col> <el-col :span="8"> <div class="TCID_cont" style="padding-top:5px;">PNR:{{item.PNR}} <template v-if="item.MidpiecePNR"> 中段PNR:{{item.MidpiecePNR}}</template> </div> </el-col> </el-row> <el-row> <el-col :span="24"> <div class="teamTitle" style="color:red">备注:{{item.Remark}}</div> </el-col> </el-row> </li> </ul> <div class="noData" v-show="noData">{{$t('system.content_noData')}}</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> </div> <el-form class="addTicketManager" :class="addShow==true?'edHeight':''" :model="addMsg" :rules="rules" ref="addMsg" label-width="100px"> <p class="_add_t">{{$t('Airticket.Air_AddTickets')}}</p> <div class="_add_sel"> <ul class="clearfix"> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_positions')" prop="FreightSpace"> <el-select v-model="addMsg.FreightSpace" filterable :placeholder="$t('pub.pleaseSel')"> <el-option v-for="item in FreightSpaceList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="单程/往返" prop="TicketType"> <el-select v-model="addMsg.TicketType" filterable :placeholder="$t('pub.pleaseSel')"> <el-option v-for="item in TicketTypeList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_TicketDeadLine')" prop="TicketDeadline"> <el-date-picker v-model="addMsg.TicketDeadline" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_Number')" prop="TicketNum"> <el-input v-model="addMsg.TicketNum" onkeyup="value=value.replace(/[^\d]/g,'')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_unitPrice')" prop="CostPrice"> <el-input v-model="addMsg.CostPrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'CostPrice')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_salesPrice')" prop="SalePrice"> <el-input v-model="addMsg.SalePrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'SalePrice')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="小程序同行价" prop="B2BPrice"> <el-input v-model="addMsg.B2BPrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'B2BPrice')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="小程序直客价" prop="B2CPrice"> <el-input v-model="addMsg.B2CPrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'B2CPrice')"> </el-input> </el-form-item> </el-col> </ul> </div> <!--添加修改航班--> <ul class="_add_hangban clearfix"> <li v-if="addMsg.TicketType" :class="addMsg.TicketType==1?'_allWidth':''"> <span class="_add_go_label">{{$t('Airticket.Air_go')}}</span> <div class="_add_go" v-for="(item,index) in addMsg.flightList" v-if="addMsg.flightList&&item.FlightSubType==1"> <div> <p> <span class="iconfont icon-hangban"></span> <span>{{item.Flight_number}} {{item.Departure_time}}</span> <span class="iconfont icon-xingzhuang" @click="deletFlightInfo(item.ID,index)"></span> </p> <el-tooltip class="item" effect="dark" :content="item.FlightDate" placement="top-start" popper-class="max-w250"> <p class="_add_info"> <span>{{$t('Airticket.Air_StartTime')}}:{{item.FlightDate}}</span> </p> </el-tooltip> <el-tooltip class="item" effect="dark" :content="item.dName" placement="top-start" popper-class="max-w250"> <p class="_add_info"> <span>{{$t('system.query_flightAir')}}:{{item.dName}}</span> </p> </el-tooltip> <el-tooltip class="item" effect="dark" :content="item.aName" placement="top-start" popper-class="max-w250"> <p class="_add_info"> <span>{{$t('system.query_arrivalAir')}}:{{item.aName }}</span> </p> </el-tooltip> <div style="margin:10px 0 0 12px;"> <el-input type="text" class="w80" v-model="item.TicketDepartureTime" @keyup.native="checkTime(item,'TicketDepartureTime')" maxlength="5" :placeholder="$t('system.ph_time')"></el-input> - <el-input type="text" class="w80" v-model="item.TicketArrivalTime" @keyup.native="checkTime(item,'TicketArrivalTime')" maxlength="5" :placeholder="$t('system.ph_time')"> </el-input> </div> </div> </div> <div class="_add_go _new_go"> <div> <p> <span>{{$t('pub.addBtn')}}</span> <span class="_add_btn" @click="addFlight()">{{$t('pub.sureBtn')}}</span> </p> <span class="_add_hbh"> <em class>航空公司</em> <el-select v-model="addGoFlight.AirLineID" filterable :placeholder="$t('pub.pleaseSel')" @change="getAirportNameList(addGoFlight.AirLineID,1)" class="w150"> <el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option> <el-option v-for="item in airlineList" :label="item.AlName" :value="item.AirLineId" :key="item.AirLineId"></el-option> </el-select> </span> <span class="_add_hbh"> <em class>{{$t('system.query_flightNum')}}</em> <el-select v-model="addGoFlight.FlightID" filterable :placeholder="$t('system.ph_choice')" class="w150"> <el-option v-for="item in AirportNameList" :key="item.ID" :label="item.Flight_number" :value="item.ID"></el-option> </el-select> </span> <span class="_add_hbh"> <em class="demonstration">{{$t('pub.date')}}</em> <el-date-picker class="w150 _add_date" v-model="addGoFlight.FlightDate" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"> </el-date-picker> </span> </div> </div> </li> <li v-if="addMsg.TicketType==2"> <span class="_add_go_label">{{$t('Airticket.Air_returnTrip')}}</span> <div class="_add_go" v-for="(item,index) in addMsg.flightList" v-if="addMsg.flightList&&item.FlightSubType==3" :key="index"> <div> <p> <span class="iconfont icon-hangban"></span> <span>{{item.Flight_number}} {{item.Departure_time}}</span> <span class="iconfont icon-xingzhuang" @click="deletFlightInfo(item.ID,index)"></span> </p> <el-tooltip class="item" effect="dark" :content="item.FlightDate" placement="top-start" popper-class="max-w250"> <p class="_add_info"> <span>{{$t('Airticket.Air_StartTime')}}:{{item.FlightDate}}</span> </p> </el-tooltip> <el-tooltip class="item" effect="dark" :content="item.dName" placement="top-start" popper-class="max-w250"> <p class="_add_info"> <span>{{$t('system.query_flightAir')}}:{{item.dName }}</span> </p> </el-tooltip> <el-tooltip class="item" effect="dark" :content="item.aName" placement="top-start" popper-class="max-w250"> <p class="_add_info"> <span>{{$t('system.query_arrivalAir')}}:{{item.aName}}</span> </p> </el-tooltip> <div style="margin:10px 0 0 12px;"> <el-input type="text" class="w80" v-model="item.TicketDepartureTime" @keyup.native="checkTime(item,'TicketDepartureTime')" maxlength="5" :placeholder="$t('system.ph_time')"></el-input> - <el-input type="text" class="w80" v-model="item.TicketArrivalTime" @keyup.native="checkTime(item,'TicketArrivalTime')" maxlength="5" :placeholder="$t('system.ph_time')"> </el-input> </div> </div> </div> <div class="_add_go _new_go"> <div> <p> <span>{{$t('pub.addBtn')}}</span> <span class="_add_btn" @click="addFlightReturn()">{{$t('pub.sureBtn')}}</span> </p> <span class="_add_hbh"> <em class>航空公司</em> <el-select v-model="returnTripData.AirLineID" filterable :placeholder="$t('pub.pleaseSel')" @change="getAirportNameList(returnTripData.AirLineID,2)" class="w150"> <el-option :label="$t('pub.unlimitedSel')" :value="defaultSelectValue"></el-option> <el-option v-for="item in airlineList" :label="item.AlName" :value="item.AirLineId" :key="item.AirLineId"></el-option> </el-select> </span> <span class="_add_hbh"> <em class>{{$t('system.query_flightNum')}}</em> <el-select v-model="returnTripData.FlightID" filterable :placeholder="$t('system.ph_choice')" class="w150"> <el-option v-for="item in BackAirportNameList" :key="item.ID" :label="item.Flight_number" :value="item.ID"></el-option> </el-select> </span> <span class="_add_hbh"> <em class="demonstration">{{$t('pub.date')}}</em> <el-date-picker class="w150 _add_date" v-model="returnTripData.FlightDate" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"> </el-date-picker> </span> </div> </div> </li> </ul> <div class="_add_ret"> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_yiding')"> <el-date-picker v-model="addMsg.FirstDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_erding')"> <el-date-picker v-model="addMsg.SecondDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_sanding')"> <el-date-picker v-model="addMsg.ThirdDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_siding')"> <el-date-picker v-model="addMsg.FourthDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_lastPayment')"> <el-date-picker v-model="addMsg.FinalPayment" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="PNR"> <el-input v-model="addMsg.PNR" :placeholder="$t('pub.pleaseImport')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_salesPlatform')"> <el-select v-model="openplatString" multiple :placeholder="$t('pub.pleaseSel')" class="multiple_input"> <el-option v-for="item in openplatform" :key="item.ID" :label="item.Name" :value="item.ID"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="线路" prop="LineId"> <el-select v-model="addMsg.LineId" :placeholder="$t('pub.pleaseSel')" class="multiple_input"> <el-option :label="$t('pub.unlimitedSel')" :value='comdefaultSelect'></el-option> <el-option v-for="item in LineList" :key="item.LineID" :label="item.LineName" :value="item.LineID"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="行程天数(国际)"> <el-input v-model="addMsg.DayNum" placeholder="行程天数" @keyup.native="checkInteger(addMsg,'DayNum')" maxlength="2"></el-input> </el-form-item> </el-col> <el-col :span="3"> <el-form-item label="团票/散票"> <el-select v-model="addMsg.TravelTicketType" :placeholder="$t('system.ph_in')" class="multiple_input"> <el-option label="团票" :value="1"></el-option> <el-option label="散票" :value="2"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="3"> <el-form-item label="机票类型"> <el-select v-model="addMsg.SellType" :placeholder="$t('system.ph_in')" class="multiple_input"> <el-option label="团队使用" :value="0"></el-option> <el-option label="单卖机票" :value="1"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="4"> <el-form-item label="可售机票数量(同业/直客)"> <el-input v-model="addMsg.B2BSellNum" placeholder="可售机票数量(同业/直客)" @keyup.native="checkInteger(addMsg,'B2BSellNum')" maxlength="2"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('pub.pubRemark')"> <el-input v-model="addMsg.Remark" placeholder="备注" type="textarea" :rows="2"></el-input> </el-form-item> </el-col> <div class="top-btn"> <button class="cancelBtn" type="button" @click="addShow=false,resetForm('addMsg')">{{$t('pub.cancelBtn')}} </button> <button type="button" class="normalBtn" :class="{'disClick':!isSubmit}" @click="submitForm('addMsg')"> {{$t('pub.saveBtn')}} </button> </div> </div> </el-form> <el-form class="addTicketManager" :class="command==true?'edHeight':''" :model="addMsg" :rules="rules" ref="addMsgCmd" label-width="100px"> <div class="combottomTitle">{{$t('Airticket.Air_orderImport')}}</div> <div class="_command_box"> <table class="_command_tb" border="0" cellspacing="0" cellpadding="0"> <thead> <tr> <th>{{$t('Airticket.Air_segment')}}</th> <th>{{$t('system.query_flightNum')}}</th> <th>{{$t('Airticket.Air_positionLevel')}}</th> <th>{{$t('Airticket.Air_flightDate')}}</th> <th>{{$t('Airticket.Air_Trip')}}</th> <th>{{$t('Airticket.Air_Number')}}</th> <th>{{$t('system.query_flightAir')}}</th> <th>{{$t('system.ph_flightTime')}}</th> <th>{{$t('system.query_arrivalAir')}}</th> <th>{{$t('system.query_arrivalTime')}}</th> <th>{{$t('system.table_operation')}}</th> </tr> </thead> <tbody> <tr v-for="(item,index) in TicketOrderList" :key="index"> <td v-if="index<1">{{$t('Airticket.Air_go')}}</td> <td v-else-if="index!==TicketOrderList.length-1">{{$t('Airticket.Air_transit')}}</td> <td v-else-if="index==TicketOrderList.length-1">{{$t('Airticket.Air_returnTrip')}}</td> <td>{{item.FlightCode}}</td> <td>{{item.FreightSpaceStr}}</td> <td>{{item.FlightDate}}</td> <td>{{item.StartCityName}}-{{item.ArrivalCityName}}</td> <td>{{item.Num}}</td> <td>{{item.StartAirport}}</td> <td>{{item.StartTime}}</td> <td>{{item.ArrivalAirport}}</td> <td>{{item.ArrivalTime}}</td> <td class="_delete_cmd" @click="deleteCmd(index)">{{$t('system.ph_shanchu')}}</td> </tr> </tbody> </table> </div> <div class="_add_ret"> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_yiding')"> <el-date-picker v-model="addMsg.FirstDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_erding')"> <el-date-picker v-model="addMsg.SecondDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_sanding')"> <el-date-picker v-model="addMsg.ThirdDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_siding')"> <el-date-picker v-model="addMsg.FourthDeposit" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_lastPayment')"> <el-date-picker v-model="addMsg.FinalPayment" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_Number')" prop="TicketNum"> <el-input v-model="addMsg.TicketNum" @keyup.native="checkInteger(addMsg,'TicketNum')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_TicketDeadLine')" prop="TicketDeadline"> <el-date-picker v-model="addMsg.TicketDeadline" type="date" :placeholder="$t('admin.admin_choDate')" value-format="yyyy-MM-dd" :picker-options="pickerOptions1"></el-date-picker> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_unitPrice')" prop="CostPrice"> <el-input v-model="addMsg.CostPrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'CostPrice')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_salesPrice')" prop="SalePrice"> <el-input v-model="addMsg.SalePrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'SalePrice')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_b2bPrice')" prop="B2BPrice"> <el-input v-model="addMsg.B2BPrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'B2BPrice')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_b2cPrice')" prop="B2CPrice"> <el-input v-model="addMsg.B2CPrice" placeholder="0.0" @keyup.native="checkPrice(addMsg,'B2CPrice')"> </el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="PNR"> <el-input v-model="addMsg.PNR" :placeholder="$t('pub.pleaseImport')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('Airticket.Air_salesPlatform')"> <el-select v-model="openplatString" multiple :placeholder="$t('pub.pleaseSel')" class="multiple_input"> <el-option v-for="item in openplatform" :key="item.ID" :label="item.Name" :value="item.ID"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('advmanager.v_line')"> <el-select v-model="addMsg.LineId" :placeholder="$t('pub.pleaseSel')"> <el-option v-for="item in LineList" :key="item.LineID" :label="item.LineName" :value="item.LineID"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="行程天数(国际)"> <el-input v-model="addMsg.DayNum" placeholder="行程天数" @keyup.native="checkInteger(addMsg,'DayNum')" maxlength="2"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="机票类型"> <el-select v-model="addMsg.SellType" :placeholder="$t('system.ph_in')" class="multiple_input"> <el-option label="团队使用" :value="0"></el-option> <el-option label="单卖机票" :value="1"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="团票/散票"> <el-select v-model="addMsg.TravelTicketType" :placeholder="$t('system.ph_in')" class="multiple_input"> <el-option label="团票" :value="1"></el-option> <el-option label="散票" :value="2"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item :label="$t('pub.pubRemark')"> <el-input v-model="addMsg.Remark" placeholder="备注" type="textarea" :rows="2"></el-input> </el-form-item> </el-col> <el-col :span="24"> <div class="commandLine"> <span> <i class="iconfont icon-arrow1"></i> </span> <el-input type="textarea" :autosize="{minRows: 1, maxRows: 8 }" resize="none" :placeholder="$t('Airticket.Air_inputOrder')" v-model="TicketOrder" class="cmd_input" @keyup.enter.native="getPostTicketOrder()"></el-input> </div> <div class="TM_OrderRemind">输入完成后回车即可导入</div> </el-col> <div class="top-btn"> <button class="cancelBtn" type="button" @click="command=false,resetForm('addMsgCmd')"> {{$t('pub.cancelBtn')}} </button> <button type="button" class="normalBtn" :class="{'disClick':!isSubmit}" @click="submitForm('addMsgCmd')"> {{$t('pub.saveBtn')}} </button> </div> </div> </el-form> <el-form class="combottomDiv" v-if="sanmai" label-width="100px" :model="sales" :rules="salerules"> <el-row> <el-col :span="20"> <p class="_add_t">散卖机票</p> </el-col> <el-col :span="4"> <button type="button" class="normalBtn" @click="saveSales()">{{$t('pub.saveBtn')}}</button> <button class="hollowFixedBtn" type="button" @click="resetForm('addMsg'),sanmai=false">{{$t('pub.cancelBtn')}}</button> </el-col> </el-row> <div class="_add_sel"> <ul class="clearfix"> <el-col :span="5"> <el-form-item label="人数" prop="AirTicketNum"> <el-input v-model="sales.AirTicketNum" @keyup.native="checkInteger(sales,'AirTicketNum')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="B2B单价" prop="B2BPrice"> <el-input v-model="sales.B2BPrice" @keyup.native="checkPrice(sales,'B2BPrice')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="B2C单价" prop="B2CPrice"> <el-input v-model="sales.B2CPrice" @keyup.native="checkPrice(sales,'B2CPrice')"></el-input> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="是否特惠" prop="IsDiscounts"> <el-select v-model="sales.IsDiscounts" :placeholder="$t('pub.pleaseSel')"> <el-option label="否" value="0" selected></el-option> <el-option label="是" value="1"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="5"> <el-form-item label="机票类型" prop="AirTicketType"> <el-select v-model="sales.AirTicketType" :placeholder="$t('pub.pleaseSel')"> <el-option label="国际机票" value="1" selected></el-option> <el-option label="国内机票" value="2"></el-option> </el-select> </el-form-item> </el-col> </ul> </div> </el-form> <el-dialog custom-class="w400" :title="importFileTitle" :visible.sync="ZhongDuanPNR" center> <el-form label-width="110px"> <el-form-item label="中段PNR"> <el-input v-model="MidpiecePNR"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <button class="hollowFixedBtn" @click="dialogFormVisible=false">{{$t('pub.cancelBtn')}}</button> <button class="normalBtn" type="primary" @click="UpdateTicketState(ZhongDuanID, 2)">{{$t('pub.sureBtn')}}</button> </div> </el-dialog> <el-dialog custom-class="w700" :title="importFileTitle" :visible.sync="outerVisible" center> <el-upload v-if="uploadDoc" ref="ticketUpload" drag class="upload-demo" :action="getImportFileUrl()" :on-success="handleAvatarSuccess"> <i class="el-icon-upload"></i> <div class="el-upload__text"> 将文件拖到此处,或 <em>点击上传</em> </div> <div slot="tip" class="el-upload__tip">只能上传Excel文件</div> </el-upload> </el-dialog> <el-dialog custom-class="w400" title="行程单上传" :visible.sync="outerVisible1" center> <el-upload v-if="uploadDoc" ref="ticketUploadItinerary" drag class="upload-demo" :http-request="uploadItinerary" :on-success="handleAvatarItinerarySuccess" action> <i class="el-icon-upload"></i> <div class="el-upload__text"> 将文件拖到此处,或 <em>点击上传</em> </div> <div slot="tip" class="el-upload__tip"></div> </el-upload> </el-dialog> <!-- 单据转移 --> <el-dialog custom-class="w400" title="机票单据转移" :visible.sync="ticketDia" center> <el-form label-width="110px"> <el-form-item label="原机票编码"> <el-input v-model="ticketMsg.OldAirId" :disabled="true"></el-input> </el-form-item> <el-form-item label="新机票编码"> <el-input v-model="ticketMsg.NewAirId"></el-input> </el-form-item> <el-form-item label="财务单据ID"> <template v-for="(item,index) in ticketMsg.FinalList"> <el-checkbox v-model="ckedArr" @change="handleChange(item)" :label="item" :key="index+5000">{{item}} </el-checkbox> </template> <span v-show="ticketMsg.FinalList.length==0" style="font-size:14px">{{$t('system.content_noData')}}</span> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <button class="hollowFixedBtn" @click="ticketDia=false">{{$t('pub.cancelBtn')}}</button> <button class="normalBtn" type="primary" @click="TicketFinalTranfer">{{$t('pub.sureBtn')}}</button> </div> </el-dialog> <!-- 机票服务费 --> <el-dialog width="1000px" title="保存" :visible.sync="moneyR" center> <el-form class="Rform" ref="form" :model="Ticketform" label-width="67px"> <table class="po_content singeRowTable" style="border:1px solid #E6E6E6;margin-bottom:15px" cellspacing="0" cellpadding="0" v-loading="loading"> <tr> <th>团号</th> <th>机位数</th> <th>服务费</th> <th>{{$t('pub.pubRemark')}}</th> </tr> <tr v-for="(item,index) in MsgRAirServiceList" :key="index"> <td><input style="position: relative;top: 3px;display: inline-block;width: 15px;height: 15px;" type="checkbox" :value="item.TCID" v-model="customerList" /> {{item.TCNUM}}({{item.TCID}}){{item.OutBranchName}} </td> <td> <el-input size="small" style="width:150px" v-model="item.TicketNum" @keyup.native="checkInteger(item,'TicketNum')"></el-input> </td> <td> <el-input size="mini" style="width:150px" v-model="item.Money" @keyup.native="checkPrice(item,'Money')"> </el-input> </td> <td> <el-input style="width:150px" v-model="item.Remark"></el-input> <el-select style="width:100px" @change="SelectFinaceId(FinaceIdnum,index)" v-model="FinaceIdnum" :placeholder="$t('pub.pleaseSel')"> <el-option v-for="(item,index) in AirSeritem" :key="index" :label="item.FinaceId" :value="item.FinaceId"></el-option> </el-select> </td> </tr> <tr v-if="MsgRAirServiceList.length==0"> <td colspan="5">{{$t('system.content_noData')}}</td> </tr> </table> <el-row style="margin-bottom:15px"> <el-col :span="8"> 付款类型 : <el-input style="width:200px" v-model="fklxStr" :disabled="true"></el-input> </el-col> <el-col :span="8"> 结算部门 : <el-input style="width:200px" v-model="jsbmStr" :disabled="true"></el-input> </el-col> </el-row> <el-row> <el-col :span="8"> <el-form-item label="上传附件"> <div class="picload"> <el-upload style="width: 138px;height: 92px;" 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> </el-form-item> </el-col> <el-col :span="16" style="padding-top:5px"> <div class="_addUpload_box" v-for="(file,fIndex) in saveMsg" :key="fIndex"> <div v-if="file.Type==3"> <div style="width:100%;height:100%;overflow: hidden;"> <img style="width:100%" :src="file.Url?file.Url:file.Content" @click="showUpLoadFile(file)"> </div> <span class="iconfont icon-guanbi1" @click="deleteUploadFile(fIndex)"></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)"></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)"></span> </div> </div> </el-col> </el-row> </el-form> <span slot="footer" class="dialog-footer"> <el-button size="small" @click="moneyR = false,FinaceIdnum=''">{{$t('pub.cancelBtn')}}</el-button> <el-button :loading="Btnloading" size="small" type="danger" @click="RSumbit">确 定</el-button> </span> </el-dialog> <!-- 开票费用 --> <el-dialog width="1000px" :title="BillingChargeTitle" :visible.sync="BillingChargeDialog" center> <el-form class="Rform" ref="form" :model="Ticketform" label-width="67px" :disabled="BillingChargeTitle=='开票费用详情'"> <div style="color: red;font-size: 13px;text-align: right;padding: 0 0 5px 0;"> 注:开票单价*开票数量+升舱增收=总开票金额,<strong>已出团</strong>才能维护开票费用,每月<strong>{{BillingChargeObj.TicketManagerEndDay}}</strong>日之前维护上月的开票费用</div> <table class="po_content singeRowTable" style="border:1px solid #E6E6E6;margin-bottom:15px" cellspacing="0" cellpadding="0" v-loading="loading"> <tr> <th>团号</th> <th>开票单价</th> <th>开票数量</th> <th>升舱增收</th> <th>总开票费用</th> </tr> <tr v-for="(item,index) in MsgRAirServiceList" :key="index"> <td> {{item.TCNUM}}({{item.TCID}}){{item.OutBranchName}} <span style="margin-left: 3px;" v-if="item.SeatNum">使用机位: <span style="color: red;">{{item.SeatNum}}</span> </span> </td> <td> {{item.UnitPrice}} </td> <td> <el-input size="small" style="width:150px" v-model="item.GuestNum" @keyup.native="checkInteger(item,'GuestNum'),computeBillingCharge()"></el-input> </td> <td> <el-input size="mini" style="width:150px" v-model="item.IncreaseIncome" @keyup.native="checkPrice(item,'IncreaseIncome'),computeBillingCharge()"> </el-input> </td> <td> {{item.TotalPrice}} </td> </tr> <tr v-if="MsgRAirServiceList.length==0"> <td colspan="5">{{$t('system.content_noData')}}</td> </tr> </table> </el-form> <span slot="footer" class="dialog-footer"> <el-button size="small" @click="BillingChargeDialog = false">{{$t('pub.cancelBtn')}}</el-button> <el-button :loading="Btnloading" size="small" type="danger" @click="SumbitBillingCharge" v-if="BillingChargeTitle!='开票费用详情'">确 定</el-button> </span> </el-dialog> </div> </template> <script> export default { data() { let validateLineId = (rule, value, callback) => { if (value == 0) { return callback(new Error("请选择线路")); } else { callback(); } }; return { TotalNum: 0, BillingChargeObj: {}, BillingChargeTitle: '', BillingChargeDialog: false, FinaceIdnum: "", AirSeritem: [], fklxStr: "虚拟结算", jsbmStr: "总部票务部", currencyTypeList: [], MsgRAirServiceList: [], isCkedAll: false, customerList: [], Btnloading: false, showDisable: false, ClientAccountList: [], ClientTypeList: [], moneyR: false, saveMsg: [], Ticketform: { ImportType: "", IsPublic: "", ClientType: "", ClientID: "", vorcherInos: [], PayDate: "", CurrencyId: 1 }, ticketMsg: { OldAirId: "", NewAirId: "", FinalList: [], FinanceId: "" }, ckedArr: [], ticketDia: false, MidpiecePNR: "", ZhongDuanID: 0, ZhongDuanPNR: false, outerVisible1: false, //导入文件弹窗标题 importFileTitle: "批量导入", //是否显示导入文件弹窗 outerVisible: false, //公用不限 comdefaultSelect: 0, //行程单上传信息 UploadItineraryMsg: { ID: 0, TripItinerary: "" }, //机票定金类型 DepositTypeArray: [{ Id: 1, Name: "一定" }, { Id: 2, Name: "二定" }, { Id: 3, Name: "三定" }, { Id: 4, Name: "四定" }, { Id: 5, Name: "尾款" } ], msg: { pageIndex: 1, pageSize: 6, AirLineID: 0, DepositType: 0, OpenPlatform: "", QFlightDateStart: "", QFlightDateEnd: "", CreateBy: 0, //操作人 FlyState: "0", LineId: 0, //线路编号 ID: 0, TicketType: 0, //定金类型(1定,2定等) IsLimit: 1, Departure_city: 0, //出发地 SellType: -1, //售卖机票类型:0-团队使用,1-单卖机票 IsSelectInvoicing: '0', //是否未维护开票金额1-未维护,2-已维护 IsNoTCID: 0, //1未绑定团期 2有机损的取消团期 TravelTicketType: 0, //团票/散票类型:1-团队,2-散票 }, maintenanceList: [{ Name: '不限', Id: '0' }, { Name: '未维护', Id: '1' }, { Name: '已维护', Id: '2' }, ], addMsg: { ID: "0", AirLineID: "", FreightSpace: "", PNR: "", TicketType: "", TicketDeadline: "", TicketNum: "", CostPrice: "", SalePrice: "", B2BPrice: "", B2CPrice: "", OpenPlatform: "", FirstDeposit: "", SecondDeposit: "", ThirdDeposit: "", FourthDeposit: "", FinalPayment: "", flightList: [], LineId: 0, //线路编号 DayNum: 0, //行程天数 SellType: 0, //售卖机票类型:0-团队机票,1-单卖机票 Remark: "", //备注信息 B2BSellNum: 0, //可售机票数量 TravelTicketType: 1,// 团票/散票: 1团票 2散票 }, //去程 addGoFlight: { AirLineTicketId: 0, FlightType: "", FlightID: "", FlightDate: "", aName: "", dName: "", FlightSubType: 1, ID: 0, AirLineID: 0 }, //回程 returnTripData: { AirLineTicketId: 0, FlightType: "", FlightID: "", FlightDate: "", aName: "", dName: "", FlightSubType: 3, ID: 0, AirLineID: 0 }, //员工列表 EmployeeList: [], defaultSelectValue: 0, downList: "", //一般模板 downMoreList: "", //多航段米板 changeAirLineID: "", chengeDelIdList: [], openplatString: [], OpenPlatformStrings: "", TicketOrder: "", //航空公司下拉框 airlineList: [], //舱位列表下拉框 FreightSpaceList: [], //机票类型下拉框 TicketTypeList: [], //日志详情 orderlogList: [], //航班详情 tripDetails: [], //订单详情 usedDetails: [], //默认图片 defaultImg: 'this.src="' + require("../../assets/img/bg_z1@2x.png") + '"', //开放平台下拉框 openplatform: [], TicketOrderList: [], //去程航班列表 AirportNameList: [], //回程航班列表 BackAirportNameList: [], //国内城市列表 ChinaCityList: [], //线路列表 LineList: [], returnTrip: [], total: 0, isSubmit: true, currentPage: 1, loading: true, noData: false, countryList: "", dataList: [], addShow: false, command: false, sanmai: false, uploadDoc: true, //散卖obj sales: { AirTicketId: 0, AirTicketNum: 0, B2BPrice: "", B2CPrice: "", IsDiscounts: "0", AirTicketType: "1" }, //1-一般导入,2-多航段导入 importType: 1, pickerOptions1: { disabledDate(time) { return time.getTime() < Date.now() - 100000000; } }, beforeCheck: { disabledDate: time => { if (this.msg.QFlightDateEnd) { let endTime = new Date(this.msg.QFlightDateEnd); return time && endTime.getTime() < time.getTime(); } else { return false; } } }, afterCheck: { disabledDate: time => { if (this.msg.QFlightDateStart) { let startTime = new Date(this.msg.QFlightDateStart); //可以选择当天 return ( time && time.getTime() < startTime.getTime() - 1 * 24 * 60 * 60 * 1000 ); } else { return false; } } }, rules: { //表单必填验证 FreightSpace: [{ required: true, message: "请选择仓位", trigger: "change" }], AirLineID: [{ required: true, message: "请选择航空公司", trigger: "change" }], TicketType: [{ required: true, message: "请选择机票类型", trigger: "change" }], TicketDeadline: [{ required: true, message: "请选择出票时限", trigger: "change" }], TicketNum: [{ required: true, message: "请输入人数", trigger: "change" }], CostPrice: [{ required: true, message: this.$t('objFill.qingshurucbj'), trigger: "change" }], SalePrice: [{ required: true, message: "请输入销售价", trigger: "change" }], B2BPrice: [{ required: true, message: `${this.$t('pub.pleaseImport')}B2B${this.$t('objFill.jiage')}`, trigger: "change" }], B2CPrice: [{ required: true, message: `${this.$t('pub.pleaseImport')}B2C${this.$t('objFill.jiage')}`, trigger: "change" }], openplatString: [{ required: true, message: "请选择销售平台", trigger: "change" }], LineId: [{ validator: validateLineId, trigger: "change", required: true }] }, salerules: { AirTicketNum: [{ required: true, message: "请填写人数", trigger: "change" }], B2BPrice: [{ required: true, message: "请填写B2B单价", trigger: "change" }], B2CPrice: [{ required: true, message: "请填写B2C单价", trigger: "change" }] }, userInfo: {}, //当前登录用户 }; }, methods: { //生成虚拟团 createTravel(item) { var that = this; var str = '是否生成虚拟团' var postMsg = { AirticketId: item.ID }; that.Confirm(str, function () { that.loading = true; that.apipost( "AirTicket_get_CreateTicketVisualPrice", postMsg, res => { that.loading = false; if (res.data.resultCode == 1) { that.Success(res.data.message); that.getList(); } else { that.Error(res.data.message); } }, err => {} ); }); }, // 开票费用 SumbitBillingCharge() { for (let i = 0; i < this.MsgRAirServiceList.length; i++) { if (this.MsgRAirServiceList[i].GuestNum === '' || this.MsgRAirServiceList[i].IncreaseIncome === '') { this.Error("请完善需开票费用信息!"); return; } if (this.MsgRAirServiceList[i].GuestNum && this.MsgRAirServiceList[i].GuestNum > this.MsgRAirServiceList[i] .SeatNum) { this.Error(`开票数不能大于${this.MsgRAirServiceList[i].TCNUM}团机位使用数${this.MsgRAirServiceList[i].SeatNum}`); return; } } this.computeBillingCharge() let msg = [] this.MsgRAirServiceList.forEach(x => { let obj = { TCID: x.TCID, ID: x.ID, GuestNum: x.GuestNum ? x.GuestNum : 0, UnitPrice: x.UnitPrice, TotalPrice: x.TotalPrice, IncreaseIncome: x.IncreaseIncome ? x.IncreaseIncome : 0, AirticketId: x.AirticketId, } msg.push(obj) }) this.Btnloading = true; this.apipost( "Invoicing_Get_SetInvoicingList", msg, res => { this.Btnloading = false; if (res.data.resultCode == 1) { this.Success(res.data.message); // this.initMsg(); this.BillingChargeDialog = false this.getList(); } else { this.Error(res.data.message); } }, err => {} ); }, BillingCharge(item, type) { if (type) { this.BillingChargeTitle = '开票费用详情' } else { this.BillingChargeTitle = '编辑开票费用' } this.BillingChargeObj = item this.loading = true this.BillingChargeDialog = true this.apipost( "Invoicing_Get_GetInvoicingList", { airticketId: item.ID }, res => { this.loading = false if (res.data.resultCode == 1) { let list list = res.data.data this.MsgRAirServiceList = []; item.PriceList.forEach(price => { list.forEach(x => { if (x.TCID == price.TCID) { let obj = { AirticketId: x.AirticketId, OutBranchName: price.OutBranchName, TCID: x.TCID, TCNUM: price.TCNUM, ID: x.ID, GuestNum: x.GuestNum, //人数 UnitPrice: x.UnitPrice, //开票单价 TotalPrice: x.TotalPrice, //总开票金额(人数 * 单价) IncreaseIncome: x.IncreaseIncome, //增收 SeatNum: x.SeatNum, }; this.MsgRAirServiceList.push(obj); } }) }); this.computeBillingCharge() } }) }, computeBillingCharge() { this.TotalNum = 0 this.MsgRAirServiceList.forEach(x => { x.TotalPrice = (x.GuestNum * x.UnitPrice) + Number(x.IncreaseIncome) // this.TotalNum+=Number(x.GuestNum) }) }, SelectFinaceId(val, index) { this.MsgRAirServiceList[index].Remark = `关联单据:${val}`; }, TikcetServiceCharge(item) { this.AirSeritem = []; if (item.FirstAuditList && item.FirstAuditList.length > 0) { item.FirstAuditList.forEach(fin => { this.AirSeritem.push(fin); }); } if (item.SecondAuditList && item.SecondAuditList.length > 0) { item.SecondAuditList.forEach(fin => { this.AirSeritem.push(fin); }); } if (item.ThirdAuditList && item.ThirdAuditList.length > 0) { item.ThirdAuditList.forEach(fin => { this.AirSeritem.push(fin); }); } if (item.FourthAuditList && item.FourthAuditList.length > 0) { item.FourthAuditList.forEach(fin => { this.AirSeritem.push(fin); }); } if (item.FinalAuditList && item.FinalAuditList.length > 0) { item.FinalAuditList.forEach(fin => { this.AirSeritem.push(fin); }); } this.moneyR = true; this.MsgRAirServiceList = []; item.PriceList.forEach(price => { if (!price.disabled) { let obj = { AirTicketId: price.AirTicketId, Money: price.Money, TCID: price.TCID, TCNUM: price.TCNUM, TicketNum: price.TicketNum, disabled: price.disabled, Remark: "", OutBranchName: price.OutBranchName }; this.MsgRAirServiceList.push(obj); } }); }, IsPublicChange(val) { this.showDisable = false; this.Ticketform.ClientType = ""; this.Ticketform.ClientID = ""; this.Ticketform.AccountNumber = ""; this.ClientAccountListS = []; if (val == 8 || val == 9) { this.showDisable = true; } }, RSumbit() { if (this.customerList.length == 0) { this.Error("至少选择一项!"); return; } this.Ticketform.AirServiceList = []; this.customerList.forEach(item => { this.MsgRAirServiceList.forEach(obj => { if (item == obj.TCID) { this.Ticketform.AirServiceList.push(obj); } }); }); let list = this.Ticketform.AirServiceList; for (let i = 0; i < list.length; i++) { if (!list[i].Money || list[i].Money == "") { this.Error("请输入服务费"); return; } if (!list[i].TicketNum || list[i].TicketNum == "") { this.Error("请输入机位数"); return; } } this.Ticketform.vorcherInos = this.saveMsg; // if(this.Ticketform.PayDate==""){ // this.Error("请选择时间!"); // return; // } this.Btnloading = true; this.apipost( "Financial_post_SetAirTicketServiceBetchImport", this.Ticketform, res => { this.Btnloading = false; if (res.data.resultCode == 1) { this.Success(res.data.message); this.initMsg(); (this.FinaceIdnum = ""), (this.moneyR = false); this.getList(); } else { this.Error(res.data.message); } }, err => {} ); }, getCurrencyType() { // 币种类型 this.apipost( "financeinfo_post_GetList", { Name: "" }, res => { if (res.data.resultCode == 1) { this.currencyTypeList = res.data.data; } }, err => {} ); }, initMsg() { this.saveMsg = []; this.Ticketform = { ImportType: "", IsPublic: "", ClientType: "", ClientID: "", vorcherInos: [], PayDate: "", CurrencyId: 1 }; }, showUpLoadFile(i) { // 预览上传文件 if (i.Type == 3) { this.picObj.push(i.Url); this.picIsShow = true; } else { 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); }, 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.$message.success(this.$t("tips.scchenggong")); }, 1 ); }, TicketFinalTranfer() { if (this.ticketMsg.NewAirId == "") { this.Error("请输入新机票编码"); return; } if (this.ticketMsg.FinanceId == "") { this.Error("请选择财务单据"); return; } this.apipost( "Financial_post_AirTicketFinanceTransfer", this.ticketMsg, res => { if (res.data.resultCode == 1) { this.ticketDia = false; this.Success(res.data.message); this.getList(); } else { this.Error(res.data.message); } }, err => {} ); }, handleChange(val) { let index = this.ckedArr.indexOf(val); if (index >= 0) { this.ckedArr = [val]; } else { this.ckedArr.splice(index, 1); } if (this.ckedArr.length > 0) { this.ticketMsg.FinanceId = this.ckedArr[0]; } else { this.ticketMsg.FinanceId = ""; } }, OpenFindig(item) { this.ticketDia = true; this.ticketMsg = { OldAirId: "", NewAirId: "", FinalList: [], FinanceId: "" }; this.ckedArr = []; this.ticketMsg.OldAirId = item.ID; let FinalList = []; if (item.FirstAuditList) { item.FirstAuditList.forEach(child => { FinalList.push(child.FinaceId); }); } if (item.SecondAuditList) { item.SecondAuditList.forEach(child => { FinalList.push(child.FinaceId); }); } if (item.ThirdAuditList) { item.ThirdAuditList.forEach(child => { FinalList.push(child.FinaceId); }); } if (item.FourthAuditList) { item.FourthAuditList.forEach(child => { FinalList.push(child.FinaceId); }); } if (item.FinalAuditList) { item.FinalAuditList.forEach(child => { FinalList.push(child.FinaceId); }); } this.ticketMsg.FinalList = FinalList; }, //页面跳转 goUrlT(path, obj, title) { this.$router.push({ name: path, query: { id: obj, blank: "y", tab: title } }); }, //联运跳转 goUrlTicketUnion(TCID, AirticketId) { this.$router.push({ name: "TicketTransport", query: { tcid: TCID, AirticketId: AirticketId, blank: "y", tab: "设置联运" } }); }, //上传行程单 uploadItinerary(item) { let newArr = []; newArr.push(item.file); let path = "/Upload/Ticket/"; this.UploadSelfFileT(path, newArr, x => { var fileUrl = this.domainManager().ViittoFileUrl + x.data.FilePath; this.UploadItineraryMsg.TripItinerary = fileUrl; this.apipost( "AirTicket_Post_SetTripItinerary", this.UploadItineraryMsg, res => { if (res.data.resultCode == 1) { this.Success("上传行程单成功!"); this.UploadItineraryMsg.ID = 0; this.UploadItineraryMsg.TripItinerary = ""; } this.outerVisible1 = false; }, null ); }); }, handleAvatarItinerarySuccess(file) { this.$refs.ticketUploadItinerary.clearFiles(); }, //跳转到财务详情页面 goFinaceDetails(frid) { this.$router.push({ name: "FinancialDocumentsDetail", query: { id: frid, blank: "y", tab: this.$t('objFill.documentparticulars') } }); }, //获取颜色状态 getClass(status) { //默认样式 var classStr = "bg_default"; switch (status) { //审核成功样式 case 4: classStr = "_bg_gre"; break; //审核中样式 case 2: classStr = "bg_auditing"; break; } return classStr; }, //获取审核状态 getTicketDepositStatus(status) { var TicketStatus = ""; switch (status) { case 2: TicketStatus = "审核中"; break; case 3: TicketStatus = "审核失败"; break; case 4: TicketStatus = "审核成功"; break; } return TicketStatus; }, //获取首付款类型 getFeeType(FeeType) { var FeeTypeName = ""; switch (FeeType) { case 1: FeeTypeName = "收款"; break; case 2: FeeTypeName = "付款"; break; } return FeeTypeName; }, //跳转财务付款单 goFinacePageOne(item, type, feeType) { var nFeeType = 2; if (feeType) { nFeeType = feeType; } var TCID = 0; if (item.TCIDList != null && item.TCIDList.length > 0) { TCID = item.TCIDList[0]; } let orderObj = { OrderID: null, OrderSource: 4, TCID: null, Obj: { Type: type }, SourceID: item.ID, TCIDList: item.TCIDList, companyIDList: item.OutBranchIdList, OtherType: 2 }; this.$router.push({ name: "ChoiceAddFinancialDocuments", query: { Type: nFeeType, portTypeId: 1, path: "TicketFinace", blank: "y", orderObj: JSON.stringify(orderObj), } }); }, goFinacePage(item, type, feeType) { var nFeeType = 2; if (feeType) { nFeeType = feeType; } var TCID = 0; if (item.TCIDList != null && item.TCIDList.length > 0) { TCID = item.TCIDList[0]; } let orderObj = { OrderID: null, OrderSource: 4, TCID: null, Obj: { Type: type }, SourceID: item.ID, TCIDList: item.TCIDList, companyIDList: item.OutBranchIdList, }; this.$router.push({ name: "ChoiceAddFinancialDocuments", query: { Type: nFeeType, portTypeId: 1, path: "TicketFinace", blank: "y", orderObj: JSON.stringify(orderObj) } }); }, //跳转至旅客名单 goCustomList(path, obj, type, title) { this.$router.push({ name: path, query: { blank: "y", isFromTk: true, id: obj.ID, Obj: JSON.stringify({ Type: type }), TCIDList: JSON.stringify(obj.TCIDList), companyIDList: JSON.stringify(obj.OutBranchIdList), tab: title } }); }, //导入 getImport(command) { this.importType = command; this.outerVisible = true; }, //下载(不要删除) getDownLoad() {}, //下载文件 DownLoad(Type, str) { if (Type == 1) { window.open(this.downList); } else if (Type == 2) { window.open(this.downMoreList); } else { window.open(str); } }, getImportFileUrl() { let url = this.domainManager().UploadFileUrl + "?cmd=dmc_post_LocalFileUpload&fileType=1&fileLimit=1&Type=2&uid=" + this.getLocalStorage().EmployeeId + "&importType=" + this.importType; return url; }, getList() { if (this.msg.ID == "") { this.msg.ID = 0; } this.loading = true; this.apipost( "AirTicket_get_GetNewPageList", this.msg, res => { this.loading = false; if (res.data.resultCode == 1) { this.total = res.data.data.count; let datas = res.data.data.pageData let arrList = function (list) { list.forEach(x => { x.isBillingCharge = false }) } arrList(datas) this.dataList = datas; let Time = this.getBeforeDate(0, new Date().Format("yyyy-MM-dd")) this.dataList.forEach(data => { if (Time > data.TicketDeadlineStr) { data.isBillingCharge = true } data.RAirServiceList.forEach(item => { data.PriceList.forEach(price => { if (price.TCID == item.TCID) { price.FinanceId = item.FinanceId; price.Money = item.Money; price.TicketNum = item.TicketNum; price.disabled = true; } }); }); }); this.noData = !this.total > 0; } if (this.msg.ID == 0) { this.msg.ID = ""; } }, err => {} ); }, //初始化航空公司下拉 initAirlines() { this.apipost( "airline_post_GetList", {}, res => { if (res.data.resultCode == 1) { this.airlineList = res.data.data; } }, err => {} ); }, //获取舱位列表 GetFreightSpaceList() { this.apipost( "AirTicket_Get_GetFreightSpaceList", {}, res => { if (res.data.resultCode == 1) { this.FreightSpaceList = res.data.data; } }, err => {} ); }, //获取机票类型 GetTicketTypeList() { this.apipost( "AirTicket_Get_GetTicketTypeList", {}, res => { if (res.data.resultCode == 1) { this.TicketTypeList = res.data.data; } }, err => {} ); }, //新增去程 addFlight() { if (this.addGoFlight.FlightDate == "") { this.Warning("请选择航班日期!"); return; } var newList = {}; var newDate = this.addGoFlight.FlightDate; this.AirportNameList.forEach(x => { if (x.ID == this.addGoFlight.FlightID) { let goFlightCount = 0; this.addMsg.flightList.forEach(flight => { if (flight.FlightSubType === 1) { goFlightCount++; } }); if (goFlightCount == 0) { newList.FlightType = 1; //去程 } else { newList.FlightType = 2; //去程中转 } newList.aName = x.aName; newList.dName = x.dName; newList.Flight_number = x.Flight_number; newList.FlightDate = newDate; newList.FlightID = this.addGoFlight.FlightID; newList.AirLineTicketId = this.addGoFlight.AirLineTicketId; newList.AirLineID = this.addGoFlight.AirLineID; newList.FlightSubType = this.addGoFlight.FlightSubType; newList.TicketDepartureTime = x.DepartureTime; newList.TicketArrivalTime = x.ArrivalTime; newList.ID = this.addGoFlight.ID; this.addMsg.flightList.push(newList); } }); //航班排序 this.FlightSort(); this.addGoFlight.FlightDate = ""; this.addGoFlight.FlightID = ""; this.addGoFlight.AirLineID = 0; }, //添加回程 addFlightReturn() { if (this.returnTripData.FlightDate == "") { this.Warning("请选择航班日期!"); return; } var newList = {}; var newDate = this.returnTripData.FlightDate; this.BackAirportNameList.forEach(x => { if (x.ID == this.returnTripData.FlightID) { let returnFlightCount = 0; this.addMsg.flightList.forEach(flight => { if (flight.FlightSubType === 3) { returnFlightCount++; } }); if (returnFlightCount == 0) { newList.FlightType = 3; //回程 } else { newList.FlightType = 2; //回程中转 } newList.aName = x.aName; newList.dName = x.dName; newList.Flight_number = x.Flight_number; newList.FlightDate = newDate; newList.FlightID = this.returnTripData.FlightID; newList.AirLineTicketId = this.returnTripData.AirLineTicketId; newList.FlightSubType = this.returnTripData.FlightSubType; newList.AirLineID = this.returnTripData.AirLineID; newList.TicketDepartureTime = x.DepartureTime; newList.TicketArrivalTime = x.ArrivalTime; newList.ID = this.returnTripData.ID; this.addMsg.flightList.push(newList); } }); //航班排序 this.FlightSort(); this.returnTripData.FlightDate = ""; this.returnTripData.FlightID = ""; this.returnTripData.AirLineID = 0; }, //航班排序 FlightSort() { let goTripArray = []; //去程航班 let returnTripArray = []; //回程航班 this.addMsg.flightList.forEach(x => { if (x.FlightSubType == 1) { goTripArray.push(x); } if (x.FlightSubType == 3) { returnTripArray.push(x); } }); goTripArray.sort(this.arraySort); returnTripArray.sort(this.arraySort); if (goTripArray != null && goTripArray.length > 0) { goTripArray.forEach((item, index) => { if (index == 0) { item.FlightType = 1; //去程 } else { item.FlightType = 2; //去程中转 } }); } this.addMsg.flightList = []; this.addMsg.flightList = goTripArray; if (returnTripArray != null && returnTripArray.length > 0) { returnTripArray.forEach((item, index) => { if (index == returnTripArray.length - 1) { item.FlightType = 3; //回程 } else { item.FlightType = 2; //去程中转 } this.addMsg.flightList.push(item); }); } }, //数组排序 arraySort(itemA, itemB) { if ( this.getConvertDate(itemA.FlightDate) < this.getConvertDate(itemB.FlightDate) ) { return -1; } else if ( this.getConvertDate(itemA.FlightDate) > this.getConvertDate(itemB.FlightDate) ) { return 1; } else { if ( this.getConvertDate(itemA.FlightDate) < this.getConvertDate(itemB.FlightDate) ) { return 1; } else if ( this.getConvertDate(itemA.FlightDate) > this.getConvertDate(itemB.FlightDate) ) { return -1; } return 0; } }, //获取日期时间转换 getConvertDate(dateStr) { if (dateStr.indexOf("年") != -1) { dateStr = this.$commonUtils.getDateStr(dateStr); } return dateStr; }, // 修改 根据ID获取信息 getEntityExtend(ID) { this.addShow = true; this.command = false; this.sanmai = false; this.initAddMsg(); this.chengeDelIdList = []; this.apipost( "ticket_get_GetEntityExtend", { ID: ID }, res => { if (res.data.resultCode == 1) { this.addMsg = res.data.data; if (this.addMsg.OpenPlatform != null) { if (this.addMsg.OpenPlatform != "") { this.OpenPlatformStrings = this.addMsg.OpenPlatform.split( "," ); this.OpenPlatformStrings.forEach(x => { this.openplatString.push(Number(x)); }); } } this.changeAirLineID = res.data.data.AirLineID; res.data.data.flightList.forEach((x, index) => { this.chengeDelIdList.push(x.ID); }); } else { this.Warning(res.data.message); } }, err => {} ); }, // 修改 根据ID获取信息 UpdateTicketState(ID, TicketState) { this.apipost( "AirTicket_get_UpdateTicketState", { ID: ID, TicketState: TicketState, MidpiecePNR: this.MidpiecePNR }, res => { if (res.data.resultCode == 1) { this.Success("操作成功"); this.getList(); } else { this.Warning(res.data.message); } this.ZhongDuanPNR = false; }, err => {} ); }, //根据航空公司ID 获取机场列表 getAirportNameList(AirLineID, type) { if (type == 1) { this.addGoFlight.FlightID = ""; this.addGoFlight.FlightDate = ""; } else { this.returnTripData.FlightID = ""; this.returnTripData.FlightDate = ""; } let msg = { airlineID: AirLineID }; this.apipost( "flight_post_GetAirportNameListExt", msg, res => { if (res.data.resultCode == 1) { if (type == 1) { this.AirportNameList = res.data.data; } else { this.BackAirportNameList = res.data.data; } } }, err => {} ); }, //命令提交 getPostTicketOrder() { if (!this.TicketOrder) { this.Warning("请输入命令"); return; } this.apipost( "AirTicket_post_PostTicketOrder", { TicketOrder: this.TicketOrder }, res => { if (res.data.resultCode == 1) { var DataArray = res.data.data; this.TicketOrder = ""; DataArray.forEach(ticketItem => { this.TicketOrderList.push(ticketItem); var newList = {}; newList.AirLineTicketId = 0; newList.FlightID = ticketItem.FID; newList.FlightDate = ticketItem.FlightDate; newList.FlightSubType = 1; newList.FlightType = 1; this.addMsg.flightList.push(newList); }); //航班排序数组 let gotripArray = this.addMsg.flightList; gotripArray.sort(this.arraySort); if (gotripArray != null && gotripArray.length > 0) { gotripArray.forEach((item, index) => { if (index == 0) { item.FlightType = 1; //启程 item.FlightSubType = 1; } else if ( index == gotripArray.length - 1 && gotripArray.length > 1 ) { item.FlightType = 3; //返程 item.FlightSubType = 3; } else { item.FlightType = 2; } }); } this.addMsg.flightList = []; this.addMsg.flightList = gotripArray; let newGoTripArray = this.TicketOrderList; newGoTripArray.sort(this.arraySort); this.TicketOrderList = newGoTripArray; this.addMsg.AirLineID = this.TicketOrderList[0].AirlineID; this.addMsg.FreightSpace = this.TicketOrderList[0].FreightSpace; this.addMsg.TicketNum = this.TicketOrderList[0].Num; } else { this.Warning(res.data.message); } }, err => {} ); }, //删除 deleteCmd(index) { var that = this; this.Confirm(this.$t('tips.shifoushanchu'), function () { that.deletelist(index); }); }, //航空公司改变 changeSele(chengeDelIdList) { var that = this; this.Confirm("航空公司改变将删除以前的航班信息?", function () { this.addMsg.flightList = []; this.apipost( "AirticketFlight_Post_RemoveByIds", { TicketFlightId: chengeDelIdList.toString() }, res => {}, err => {} ); }); }, //删除航班 deletFlightInfo(id, index) { var that = this; that.Confirm("是否删除此航班?", function () { that.addMsg.flightList.splice(index, 1); that.apipost( "AirticketFlight_Post_Remove", { TicketFlightId: id }, res => {}, err => {} ); }); }, saveAddData(addMsg) { if (addMsg == "addMsgCmd") { if (this.addMsg.flightList.length >= 2) { this.addMsg.TicketType = 2; } } if (!this.addMsg.FirstDeposit) { this.addMsg.FirstDeposit = ""; } if (!this.addMsg.SecondDeposit) { this.addMsg.SecondDeposit = ""; } if (!this.addMsg.ThirdDeposit) { this.addMsg.ThirdDeposit = ""; } if (!this.addMsg.FourthDeposit) { this.addMsg.FourthDeposit = ""; } this.addMsg.TicketNum = parseInt(this.addMsg.TicketNum); this.addMsg.ID = parseInt(this.addMsg.ID); this.addMsg.OpenPlatform = this.openplatString.toString(); var newList = this.addMsg; newList.flightList.forEach(x => { delete x.ArrivalCityName; delete x.DepartureName; delete x.Flight_number; delete x.aName; delete x.dName; }); if ( newList.flightList != null && newList.flightList.length > 0 && newList.flightList[0].AirLineID != undefined ) { this.addMsg.AirLineID = newList.flightList[0].AirLineID; } if (this.isSubmit) { this.isSubmit = false; this.apipost( "AirTicket_post_Set", newList, res => { if (res.data.resultCode == 1) { this.Success(this.$t('tips.saveYes')); this.initAddMsg(); this.getList(); this.addShow = false; this.command = false; this.isSubmit = true; } else { this.isSubmit = true; this.Error(res.data.message); } }, err => {} ); } }, //提交创建、修改表单 submitForm(addMsg) { let that = this; that.$refs[addMsg].validate(valid => { if (valid) { that.saveAddData(addMsg); } else { return false; } }); }, //删除数组 deletelist(index) { this.TicketOrderList.splice(index, 1); this.addMsg.flightList.splice(index, 1); }, //获取订单详情 getUsedDetails(index) { this.usedDetails = this.dataList[index].OrderList; }, //日志详情 InfoChangeLogShow(ID) { this.apipost( "DmcInfoChangeLog_get_GetList", { ResourceId: ID, ResourceType: 3 }, res => { this.orderlogList = res.data.data; }, err => {} ); }, //获取开放平台 GetPlatform() { this.apipost("hotel_post_GetPlatform", {}, res => { this.openplatform = res.data.data; }); }, //翻页功能按钮 handleCurrentChange(val) { this.msg.pageIndex = val; this.getList(); }, //查询初始化页码 resetPageIndex() { this.msg.pageIndex = 1; this.currentPage = 1; }, //重新初始化提交参数 initAddMsg() { this.addMsg.ID = 0; this.addMsg.AirLineID = ""; this.addMsg.FreightSpace = ""; this.addMsg.PNR = ""; this.addMsg.TicketType = 1; this.addMsg.TicketDeadline = ""; this.addMsg.TicketNum = ""; this.addMsg.CostPrice = ""; this.addMsg.SalePrice = ""; this.addMsg.B2BPrice = ""; this.addMsg.B2CPrice = ""; this.addMsg.OpenPlatform = ""; this.addMsg.FirstDeposit = ""; this.addMsg.SecondDeposit = ""; this.addMsg.ThirdDeposit = ""; this.addMsg.FourthDeposit = ""; this.addMsg.FinalPayment = ""; this.addMsg.flightList = []; this.addMsg.LineId = 0; this.AirportNameList = ""; this.addGoFlight.FlightDate = ""; this.addGoFlight.FlightID = ""; this.TicketOrderList = []; this.openplatString = []; this.changeAirLineID = ""; this.addMsg.DayNum = 0; }, //弹出框取消 初始化谈框内表单 resetForm(formName) { this.$refs[formName].resetFields(); this.openplatString = []; }, //上传文件后清空文件队列 handleAvatarSuccess(res, file) { this.$refs.ticketUpload.clearFiles(); if (res.resultCode == 1) { this.Success(res.message); this.outerVisible = false; this.getList(); } else { this.Error(res.message); } }, //下载模板文件 getDownList() { this.apipost( "AirTicket_post_DownAirticket", {}, res => { if (res.data.resultCode == 1) { this.downList = this.domainManager().LocalTemplateFileDownLoadUrl + res.data.data.FileUrl; this.downMoreList = this.domainManager().LocalTemplateFileDownLoadUrl + res.data.data.MoreUrl; } else { this.Error(res.data.message); } }, err => {} ); }, goUrl(path, obj, name) { this.$router.push({ path: path, query: { id: obj.ID, alcode: obj.AlCode, flightdate: obj.FlightDate, blank: "y", tab: name } }); }, //删除机票 DeleteAirticket(Id) { if (Id > 0) { var that = this; this.Confirm(this.$t('tips.shifoushanchu'), function () { var msg = { ID: Id }; that.apipost( "AirTicket_Post_RemoveAirticket", msg, res => { if (res.data.resultCode == 1) { that.Success(this.$t('tips.shanchuchenggong')); that.getList(); } else { that.Error(res.data.message); } }, null ); }); } else { this.addMsg.RulesList.splice(index, 1); } }, //根据当前员工所在部门获取该部门及子部门员工信息只获取票务信息 getEmployeeList() { this.apipost( "admin_get_GetEmployeeByUserDepartmentId", { IsGetTicket: 1 }, res => { if (res.data.resultCode == 1) { this.EmployeeList = res.data.data; } }, err => {} ); }, //获取线路列表 GetLineList() { this.apipost( "line_post_GetAllList", {}, res => { if (res.data.resultCode == 1) { this.LineList = res.data.data; } }, err => {} ); }, //散卖机票 sanSale(item) { this.sanmai = true; this.addShow = false; this.command = false; this.sales.AirTicketId = item.ID; this.sales.AirTicketNum = item.AirTicketScatterNum; this.sales.B2BPrice = item.ScatterB2BPrice; this.sales.B2CPrice = item.ScatterB2CPrice; if (item.IsDiscounts != null) { this.sales.IsDiscounts = item.IsDiscounts.toString(); } else { this.sales.IsDiscounts = "0"; } if (item.AirTicketType != null) { this.sales.AirTicketType = item.AirTicketType.toString(); } else { this.sales.AirTicketType = "1"; } }, //保存 saveSales() { this.apipost( "ticket_post_SetAirTicketScattering", this.sales, res => { if (res.data.resultCode == 1) { this.Success(res.data.message); this.getList(); this.sanmai = false; } else { this.Error(res.data.message); } }, err => {} ); }, //获取中国下面的所有城市 GetChinaCityList() { this.apipost( "Destination_get_GetCityListByCountryId", { Id: 2 }, res => { if (res.data.resultCode == 1) { this.ChinaCityList = res.data.data; } else { this.Error(res.data.message); } }, err => {} ); } }, mounted() { this.userInfo = this.getLocalStorage(); var id = this.$route.query.id; if (id) { this.msg.ID = id; } else { //358,359,360,361,362,363 if (this.userInfo.RB_Department_Id == 358 || this.userInfo.RB_Department_Id == 359 || this.userInfo .RB_Department_Id == 360 || this.userInfo.RB_Department_Id == 361 || this.userInfo.RB_Department_Id == 362 || this.userInfo.RB_Department_Id == 363) { this.msg.CreateBy = this.userInfo.EmployeeId; } } this.GetChinaCityList(); this.GetLineList(); this.getList(); this.initAirlines(); this.GetFreightSpaceList(); this.GetTicketTypeList(); this.GetPlatform(); this.getDownList(); this.getEmployeeList(); this.getCurrencyType(); } }; </script>