<style> * { margin: 0; padding: 0; } .TC-MainContent { /* min-height: 650px; */ background: url(../assets/img/bodyBg.png); padding-top: 10px; font: normal 13px 'Microsoft Yahei'; color: #555; height: auto !important; } .TC-MainContent .fixedMenu { position: fixed; left: 20px; top: 75px; margin: 0; padding-top: 10px; } .TC-MainContent .fixedMenu li { padding: 5px 15px; position: relative; border-right: 2px solid #e2e2e2; cursor: pointer; list-style: none; font-size: 13px; } .TC-MainContent .fixedMenu li:after { content: ''; display: block; width: 0; height: 0; border: 5px solid transparent; border-left-color: #e2e2e2; position: absolute; right: -12px; top: 11px; } .TC-MainContent .contractTit { position: fixed; left: 0; top: 0; width: 100%; z-index: 1000; padding: 15px 20px 12px; line-height: 30px; box-sizing: border-box; background: url(../assets/img/bodyBg.png); font-size: 18px; color: #555; } .TC-MainContent .contractTit span { font-size: 21px; font-weight: bold; } .TC-MainContent .block { border: 1px solid #cdcdcd; background: #f9f9f9; position: relative; margin-bottom: 20px; } .TC-MainContent .container-fluid { padding-right: 20px; padding-left: 20px; *zoom: 1; } .TC-MainContent .mtop15 { margin-top: 15px; } .TC-MainContent .blockTitle { border-bottom: 1px solid #cdcdcd; background-color: #efefef; } .TC-MainContent .blockTitle span.icon { border-right: 1px solid #CDCDCD; position: absolute; left: 10px; height: 40px; padding-right: 10px; padding-top: 8px; } .TC-MainContent .blockTitle h2 { font-size: 15px; min-height: 40px; margin: 0; font-family: 'Microsoft Yahei'; color: #5b5b5b; padding-right: 15px; padding-left: 48px; line-height: 40px; } .TC-MainContent .blockTitle h2 { font-size: 15px; min-height: 40px; margin: 0; font-family: 'Microsoft Yahei'; color: #5b5b5b; padding-right: 15px; padding-left: 48px; } .TC-MainContent .block em { font-style: normal; } .TC-MainContent .createTableTitle { padding: 10px 0; margin: 5px 30px 0; border-bottom: 1px dashed #ccc; font: normal 15px 'microsoft yahei'; } .TC-MainContent .createTable { background-color: #f9f9f9; width: 100%; } .TC-MainContent .el-form-item { margin-bottom: 10px; } .TC-MainContent .w300 { width: 300px !important; } .TC-MainContent .w200 { width: 200px !important; } .TC-MainContent .w150 { width: 150px !important; } .TC-MainContent .w180 { width: 180px !important; } .TC-MainContent .w600 { width: 600px !important; } .TC-MainContent .singeRowTable { width: 100%; border-collapse: collapse; } .TC-MainContent .singeRowTable tr th, .v-table-title-cell { background: #E6E6E6; height: 40px; font-size: 14px; color: #333; } .TC-MainContent .singeRowTable tr { background: #fff; text-align: center; height: 40px; } .TC-MainContent .singeRowTable tr:nth-child(2n+1) { background: #fafafa; } .TC-MainContent .singeRowTable tr:hover { background: #f2f2f2; } .TC-MainContent .singeRowTable tr td { font-size: 12px; border: 1px solid #E5E5E5; } .TC-MainContent .TC_NewAddBtn { background-color: #006dcc; width: 83px; height: 26px; color: #fff; border: none; margin-right: 5px; cursor: pointer; } .TC-MainContent .singeRowTable .el-button.is-circle { padding: 5px; } .TC-MainContent .TcNewTable td { padding: 5px; } .TcNewTable tr:hover { background-color: transparent !important; } .TC-MainContent .fixedMenu li.active { background: #90b7ec; color: #fff; border-right-color: #5882bb; } .TC-MainContent .fixedMenu li.active:after { border-left-color: #5882bb; } .TC-MainContent .pull-right { float: right; } .TC-MainContent .TC_disabled { color: #57a3f3; cursor: not-allowed !important; } .TC-MainContent .TCbtn-info { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #49afcd; background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); background-repeat: repeat-x; border-color: #2f96b4 #2f96b4 #1f6377; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); padding: 10px 19px; border: none; outline: none; cursor: pointer; } .TC-MainContent .btn-warning { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #faa732; *background-color: #f89406; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; border-color: #f89406 #f89406 #ad6704; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); padding: 10px 19px; outline: none; border: none; cursor: pointer; } .TCbtn-info:hover, .btn-warning:hover { color: #ffffff; opacity: 0.8; } .TcTravel_Table { width: 100%; border: none; border-collapse: collapse; border-spacing: 0; } .TcTravel_Table td { border: 1px solid rgb(0, 0, 0); word-break: break-all; padding: 5px; line-height: 2; } .TC_LASTTD div { margin-bottom: 10px; } .feeJisuan .el-form-item__label { margin-top: 5px; } .TC-MainContent .ql-editor { min-height: 200px; } .TC-MainContent .disClick { background-color: #d1d1d1 !important; color: #fff !important; background-image: none; border: 1px solid #d1d1d1 !important; } .TC-MainContent .disClick:hover { background-color: #d1d1d1 !important; cursor: default !important; box-shadow: none !important; } </style> <template> <div class="TC-MainContent"> <!-- 内容开始 --> <ul class="fixedMenu" id="fixedMenu"> <li v-for="(item,index) in menuArr" :class="{'active':index==ckedIndex}" @click="ckedIndex=index,goAnchor('#anchor-'+index)" :key="index">{{item}}</li> </ul> <div class="contractTit"> <span> 单项委托协议 </span> <div class="pull-right"> <input type="button" class="btn-warning" :class="{'disClick':!isSubmit}" @click="submitForm('CtObj')" :value="$t('pub.saveBtn')" /> </div> </div> <el-form label-width="180px" :model="CtObj" :rules="rules" ref="CtObj"> <div class="container-fluid" style="padding-top: 60px; padding-left: 220px;"> <div class="block mtop15" id="anchor-0" ref="anchor0"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-dingdanguanli-"></i> </span> <h2> <em>合同基本信息</em> </h2> </div> <div class="createTableTitle">委托方(旅游者)信息</div> <table class="createTable"> <tbody> <tr> <td> <el-form-item :label="$t('system.query_name')" prop="Tourists_Name"> <el-input type="text" v-model="CtObj.Tourists_Name" maxlength="100" class="w300"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item label="证件号码"> <el-input type="text" v-model="CtObj.Tourists_IDNum" maxlength="100" class="w300"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item label="住所"> <el-input type="text" v-model="CtObj.Tourists_Addres" class="w300" maxlength="100"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('scen.sc_tel')" prop="Tourists_Tel"> <el-input type="text" v-model="CtObj.Tourists_Tel" maxlength="100" class="w300"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('hotel.hotel_fax')"> <el-input type="text" v-model="CtObj.Tourists_Fax" maxlength="100" class="w300"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('objFill.youbian')"> <el-input type="text" v-model="CtObj.Tourists_PostNum" maxlength="6" class="w300"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item label="邮箱"> <el-input type="text" v-model="CtObj.Tourists_Email" maxlength="100" class="w300"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item label="紧急情况联系人姓名" prop="Tourists_EmergencyLinkMan"> <el-input type="text" maxlength="100" v-model="CtObj.Tourists_EmergencyLinkMan" class="w300"> </el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item label="紧急情况联系人电话" prop="Tourists_EmergencyLinkTel"> <el-input type="text" maxlength="100" v-model="CtObj.Tourists_EmergencyLinkTel" class="w300"> </el-input> </el-form-item> </td> </tr> </tbody> </table> <div class="createTableTitle">受托方(旅行社)信息</div> <table class="createTable"> <tbody> <tr> <td> <el-form-item label="合同章"> <el-select v-model="CtObj.SignType" :placeholder="$t('pub.pleaseSel')" @change="changeSignType"> <el-option key="0" label="和平章" :value="0"> </el-option> <el-option key="1" label="日本公司章" :value="1"> </el-option> </el-select> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('system.query_airName')"> <el-input type="text" v-model="CtObj.TravelAgency_Name" class="w300" maxlength="70"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('objFill.jinbanr')" prop="TravelAgency_DealMan"> <el-input type="text" class="w300" v-model="CtObj.TravelAgency_DealMan" maxlength="50"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item label="营业地址"> <el-input type="text" class="w300" v-model="CtObj.TravelAgency_Address" maxlength="100"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('scen.sc_tel')"> <el-input type="text" class="w300" v-model="CtObj.TravelAgency_Tel" maxlength="25"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('hotel.hotel_fax')"> <el-input type="text" class="w300" v-model="CtObj.TravelAgency_Fax" maxlength="50"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('objFill.youbian')"> <el-input type="text" class="w300" v-model="CtObj.TravelAgency_PostNum" maxlength="6"></el-input> </el-form-item> </td> </tr> <tr> <td> <el-form-item :label="$t('objFill.dianziyx')"> <el-input type="text" class="w300" v-model="CtObj.TravelAgency_Email" maxlength="50"></el-input> </el-form-item> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-1" ref="anchor1"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-renwuguanli"></i> </span> <h2> <em>相关告知及提示</em> </h2> </div> <div class="createTableTitle">机票预定</div> <table class="createTable"> <tbody> <tr> <td> <div style="margin:0 0 10px 50px">a.折扣机票出票后不得退票、不改签。不可变更姓名、证件号码、日期和航班,一般在合同签订后 <el-form-item style="display:inline-block;" label-width="0"> <el-input type="text" class="w150" v-model="CtObj.C_TicketDayNum" @keyup.native="checkInteger(CtObj,'C_TicketDayNum')" maxlength="2"></el-input> 日内出票 </el-form-item> </div> </td> </tr> </tbody> </table> <div class="createTableTitle">酒店预订</div> <table class="createTable"> <tbody> <tr> <td> <div style="margin:0 0 20px 50px">旅行社代旅游者预订酒店,一般合同签订后 <el-form-item style="display:inline-block;margin-bottom:0;" label-width="0"> <el-input type="text" class="w150" v-model="CtObj.C_OrderDayNum" @keyup.native="checkInteger(CtObj,'C_OrderDayNum')" maxlength="2"></el-input> </el-form-item> 日内旅行社将为旅游者下订单,并以短信的方式通知旅游者,酒店一经预定并由旅行社通知到旅游者即完成合同代理义务。因酒店服务质量、退改房等引起的纠纷旅行社不承担责任,但应协助旅游者与酒店协商解决。 </div> </td> </tr> </tbody> </table> <div class="createTableTitle">代办签证</div> <table class="createTable"> <tbody> <tr> <td> <div style="margin:20px 0 10px 50px"> 旅游者委托旅行社代办旅游签证的,旅行社需收取一定数额的出境押金用于旅游者违反旅游行程时间滞留境外或逾期回国时,旅游者应当向旅行社承担由此造成损失,包括旅行社信誉或被停签的损失,一旦发生滞留境外或逾期回国、不配合旅行社销签的,旅行社将该押金用于赔偿损失,不予退还。该押金应于旅行社交付旅游者签证前 <el-form-item style="display:inline-block;margin-bottom:0;" label-width="0"> <el-input type="text" class="w150" v-model="CtObj.C_PayDayNum" @keyup.native="checkInteger(CtObj,'C_PayDayNum')" maxlength="2"></el-input> </el-form-item> 日内全额交纳。如未按时交纳该押金,旅行社有权停止交付旅游者签证并办理注销,费用不退还;如旅游者按期回国并销签后凭记载有入境记录的护照和登机牌向旅行社领回该押金。如未收取押金旅游者发生滞留、晚归或不配合销签的,旅行社有权向旅游者追偿由此造成的损失。 </div> </td> </tr> <tr> <td> <div style="margin:0 0 10px 50px">旅游者同意选择下列第 <el-form-item style="display:inline-block;margin-bottom:0;" label-width="0"> <el-input type="text" class="w150" v-model="CtObj.C_SignType" maxlength="1"></el-input> </el-form-item> 种方式交付办理签证的材料及领取签证。 </div> </td> </tr> <tr> <td> <div style="margin:0 0 10px 50px">A、旅游者亲自现场领取。</div> </td> </tr> <tr> <td> <div style="margin:0 0 10px 50px">B、旅游者委托第三人现场领取,第三人应持旅游者本人签字的授权委托书原件。</div> </td> </tr> <tr> <td> <div style="margin:0 0 10px 50px"> C、旅游者通过中国邮政EMS快递专递形式领取,费用由旅游者承担。如旅游者采取该方式领取的,旅行社将签证交付邮政部门即完成代理义务。因快递发生延误、丢失、毁损、灭失等风险,均由旅游者自行承担责任。 </div> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-2" ref="anchor2"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-copy"></i> </span> <h2> <em>费用计算</em> </h2> </div> <table class="createTable feeJisuan"> <tbody> <tr> <td> <div style="margin:20px 0 10px 50px"> <el-form-item style="display:inline-block;" label="费用总额(小写)" prop="C_TotalPrice"> <el-input type="text" class="w300" v-model="CtObj.C_TotalPrice" @keyup.native="checkPrice(CtObj,'C_TotalPrice'),number_chinese(CtObj.C_TotalPrice)" maxlength="10"></el-input> {{getCurrencyStr()}} </el-form-item> <el-form-item style="display:inline-block;" label="(大写)" label-width="120px"> <el-input type="text" class="w300" maxlength="50" v-model="AmountMoney"></el-input> {{getCurrencyStr()}} </el-form-item> </div> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-3" ref="anchor3"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-people"></i> </span> <h2> <em>游客信息</em> </h2> </div> <table class="singeRowTable TcNewTable" border="0" cellspacing="0" cellpadding="0"> <tr> <th width="60">{{$t('active.ad_xuhao')}}</th> <th>{{$t('system.query_name')}}</th> <th>{{$t('system.table_sex')}}</th> <th>证件类型</th> <th>{{$t('sm.huzhaohaoma')}}</th> <th>联系电话(手机)</th> <th>{{$t('objFill.v101.Contract.shengtizk')}}</th> <th width="100">{{$t('hotel.table_operat')}}</th> </tr> <tr v-for="(item, index) in CtObj.ContractGuestList" :key="index"> <td>{{ index + 1 }}</td> <td> <span v-if="item.IsShow == 0">{{ item.CGuestName }}</span> <el-input type="text" class="w150" v-model="item.CGuestName" v-else></el-input> </td> <td> <span v-if="item.IsShow == 0">{{ item.CGuestSex }}</span> <el-select v-model="item.CGuestSex" v-else> <el-option :label="$t('pub.man')" value="男"></el-option> <el-option :label="$t('pub.woman')" value="女"></el-option> </el-select> </td> <td> <span v-if="item.IsShow == 0">{{ item.CGuestCertificateType }}</span> <el-select v-model="item.CGuestCertificateType" v-else> <el-option label="护照" value="护照"></el-option> <el-option label="港澳通行证" value="港澳通行证"></el-option> <el-option label="赴台证" value="赴台证"></el-option> <el-option label="身份证" value="身份证"></el-option> <el-option :label="$t('active.cl_qita')" :value="$t('active.cl_qita')"></el-option> </el-select> </td> <td> <span v-if="item.IsShow == 0">{{ item.CGuestCertificateNum }}</span> <el-input type="text" v-model="item.CGuestCertificateNum" v-else></el-input> </td> <td> <span v-if="item.IsShow == 0">{{ item.CGuestTel }}</span> <el-input type="text" @keyup.native="checkInteger(item,'CGuestTel')" v-model="item.CGuestTel" v-else> </el-input> </td> <td> <span v-if="item.IsShow == 0">{{ item.CGuestHealth }}</span> <el-input type="text" placeholder="健康" v-model="item.CGuestHealth" v-else></el-input> </td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" v-if="item.IsShow == 0" placement="top-start"> <el-button type="primary" icon="el-icon-edit" circle @click="commonUpdate(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('pub.saveBtn')" v-if="item.IsShow == 1" placement="top-start"> <el-button type="primary" icon="iconfont icon-baocun" @click="commonSave(item)" circle></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" circle @click="delTouristArr(index)"></el-button> </el-tooltip> </td> </tr> <tr> <td colspan="9" style="text-align:right;"> <input type="button" class="TC_NewAddBtn" @click="addTourist()" value="+添加游客" /> </td> </tr> </table> </div> <div class="block mtop15" id="anchor-4" ref="anchor4"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-bianji"></i> </span> <h2> <em>机票预订</em> </h2> </div> <table class="singeRowTable TcNewTable" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <th width="60">{{$t('active.ad_xuhao')}}</th> <th width="10%">{{$t('salesModule.Time')}}</th> <th width="15%">{{$t('sm.chufadi')}}</th> <th width="12%">{{$t('system.query_dest')}}</th> <th width="12%">{{$t('system.query_flightNum')}}</th> <th width="12%">机票金额({{getCurrencyStr()}}/张)</th> <th width="12%">机场建设费({{getCurrencyStr()}}/张)</th> <th width="12%">定金({{getCurrencyStr()}}/张)</th> <th width="100">{{$t('hotel.table_operat')}}</th> </tr> <tr v-for="(item,index) in CtObj.ContractTicketList" :key="index"> <td>{{index+1}}</td> <td> <span v-if="item.IsShow == 0">{{item.TicketTime | YMD}}</span> <el-date-picker v-else class="w200" v-model="item.TicketTime" type="datetime" format="yyyy-MM-dd HH:mm" placeholder=''></el-date-picker> </td> <td> <span v-if="item.IsShow == 0">{{item.StartPlace}}</span> <el-input v-else type="text" v-model="item.StartPlace"></el-input> </td> <td> <span v-if="item.IsShow == 0">{{item.ArrivePlace}}</span> <el-input v-else type="text" v-model="item.ArrivePlace"></el-input> </td> <td> <span v-if="item.IsShow == 0">{{item.FlightNum}}</span> <el-input v-else type="text" v-model="item.FlightNum"></el-input> </td> <td> <span v-if="item.IsShow == 0">{{item.TicketPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'TicketPrice')" v-model="item.TicketPrice"></el-input> </td> <td> <span v-if="item.IsShow == 0">{{item.AirportPirce}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'AirportPirce')" v-model="item.AirportPirce"></el-input> </td> <td> <span v-if="item.IsShow == 0">{{item.DepositPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'DepositPrice')" v-model="item.DepositPrice"></el-input> </td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start" v-if="item.IsShow == 0"> <el-button type="primary" icon="el-icon-edit" circle @click="commonUpdate(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('pub.saveBtn')" placement="top-start" v-if="item.IsShow == 1"> <el-button type="primary" icon="iconfont icon-baocun" @click="commonSave(item)" circle></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" @click="delTicket(index)" circle></el-button> </el-tooltip> </td> </tr> <tr> <td colspan="9" style="text-align:right;"> <input type="button" class="TC_NewAddBtn" @click="addTickets()" value="+添加记录" /> </td> </tr> <tr> <td colspan="9" style="text-align:left;"> <div style="margin:20px 0 10px 50px"> <el-form-item style="display:inline-block;" label="共计:" label-width="60px"> <el-input type="text" class="w150" @keyup.native="checkInteger(CtObj,'TicketTotalNum')" v-model="CtObj.TicketTotalNum"></el-input> </el-form-item> <el-form-item style="display:inline-block;" label="张机票合同签订后" label-width="130px"> <el-input type="text" class="w150" @keyup.native="checkInteger(CtObj,'TicketOutDayNum')" v-model="CtObj.TicketOutDayNum"></el-input> 日内出票, </el-form-item> </div> <div style="margin:0 0 20px 50px"> 本机票出票后不得退票、改签。由于旅游者原因退、改签机票款全部损失,由旅游者自行承担。 </div> <div style="margin-left:50px"> <el-form-item label="机票预定费用总额:" label-width="140px"> <el-input type="text" class="w150" @keyup.native="checkPrice(CtObj,'TicketTotalDepositPrice')" v-model="CtObj.TicketTotalDepositPrice"></el-input> {{getCurrencyStr()}} </el-form-item> </div> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-5" ref="anchor5"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-bianji"></i> </span> <h2> <em>酒店预订</em> </h2> </div> <table class="singeRowTable TcNewTable" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <th width="60">{{$t('active.ad_xuhao')}}</th> <th>{{$t('hotel.table_hotelname')}}</th> <th>{{$t('OrderList.rooms.normal')}}</th> <th>{{$t('objFill.danrenjian')}}</th> <th>{{$t('objFill.shanrenjian')}}</th> <th>成人人数</th> <th width="200"> <div>儿童人数</div> <div>(不占床位、不加床位)</div> </th> <th> <div>{{$t('objFill.fangfei')}}</div> <div>({{getCurrencyStr()}}/间/晚)</div> </th> <th> <div>{{$t('objFill.dingjin')}}</div> <div>({{getCurrencyStr()}}/间/晚)</div> </th> <th>{{$t('objFill.ruzhuriqi')}}</th> <th>离店日期</th> <th width="100">{{$t('hotel.table_operat')}}</th> </tr> <tr v-for="(item,index) in CtObj.ContractHotelList" :key="index"> <td>{{index+1}}</td> <td> <span v-if="item.IsShow==0">{{item.HotelName}}</span> <el-input v-else type="text" v-model="item.HotelName"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.DoubleRoom}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'DoubleRoom')" v-model="item.DoubleRoom"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.SingleRoom}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'SingleRoom')" v-model="item.SingleRoom"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.ThirdRoom}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'ThirdRoom')" v-model="item.ThirdRoom"> </el-input> </td> <td> <span v-if="item.IsShow==0">{{item.AdultNum}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'AdultNum')" v-model="item.AdultNum"> </el-input> </td> <td> <span v-if="item.IsShow==0">{{item.ChildrenNum}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'ChildrenNum')" v-model="item.ChildrenNum"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.RoomPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'RoomPrice')" v-model="item.RoomPrice"> </el-input> </td> <td> <span v-if="item.IsShow==0">{{item.DepositPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'DepositPrice')" v-model="item.DepositPrice"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.CheckInDate}}</span> <el-date-picker v-else class="w150" type="date" v-model="item.CheckInDate" value-format="yyyy-MM-dd" placeholder=''></el-date-picker> </td> <td> <span v-if="item.IsShow==0">{{item.OutDate}}</span> <el-date-picker v-else class="w150" type="date" v-model="item.OutDate" value-format="yyyy-MM-dd" placeholder=''></el-date-picker> </td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" v-if="item.IsShow==0" placement="top-start"> <el-button type="primary" icon="el-icon-edit" circle @click="commonUpdate(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('pub.saveBtn')" v-if="item.IsShow==1" placement="top-start"> <el-button type="primary" icon="iconfont icon-baocun" circle @click="commonSave(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" circle @click="delHotelList(index)"></el-button> </el-tooltip> </td> </tr> <tr> <td colspan="12" style="text-align:right;"> <input type="button" class="TC_NewAddBtn" @click="addHotelList()" value="+添加记录" /> </td> </tr> <tr> <td colspan="12" style="text-align:left;"> <div style="margin:20px 0 0 50px"> <el-form-item style="display:inline-block;" label="共计:" label-width="60px"> <el-input type="text" class="w180" @keyup.native="checkInteger(CtObj,'HotelTotal')" v-model="CtObj.HotelTotal"></el-input> 间/晚 </el-form-item> </div> <div style="margin:10px 0 10px 50px"> <el-form-item style="display:inline-block;" label="酒店入住的方式:" label-width="130px"> <el-input type="text" class="w180" v-model="CtObj.HotelCheckInType"></el-input> </el-form-item> </div> <div style="margin:0 0 10px 50px"> <el-form-item style="display:inline-block;" label="下订单后通知旅游者的方式:" label-width="200px"> <el-input type="text" class="w180" v-model="CtObj.HotelNotice"></el-input> </el-form-item> </div> <div style="margin:0 0 20px 56px"> 该酒店一经下订单不退、不改,如因客人原因退、改房,房费全损,由旅游者承担。 </div> <div> <el-form-item style="display:inline-block;" label="费用共计:" label-width="140px"> <el-input type="text" class="w180" @keyup.native="checkPrice(CtObj,'HotelTotalPrice')" v-model="CtObj.HotelTotalPrice"></el-input> {{getCurrencyStr()}} </el-form-item> </div> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-6" ref="anchor6"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-bianji"></i> </span> <h2> <em>接送服务</em> </h2> </div> <table class="singeRowTable TcNewTable" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <th width="60">{{$t('active.ad_xuhao')}}</th> <th>{{$t('objFill.yongcrq')}}</th> <th>乘客人数</th> <th>{{$t('sm.chufadi')}}</th> <th>{{$t('system.query_dest')}}</th> <th>{{$t('advmanager.v_type')}}</th> <th width="100">{{$t('hotel.table_operat')}}</th> </tr> <tr v-for="(item,index) in CtObj.ContractPickUpList" :key="index"> <td>{{index+1}}</td> <td> <span v-if="item.IsShow==0">{{item.UseTime}}</span> <el-date-picker v-else class="w150" v-model="item.UseTime" type="date" value-format="yyyy-MM-dd" placeholder=''></el-date-picker> </td> <td> <span v-if="item.IsShow==0">{{item.UseNum}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'UseNum')" v-model="item.UseNum"> </el-input> </td> <td> <span v-if="item.IsShow==0">{{item.StartPlace}}</span> <el-input v-else type="text" v-model="item.StartPlace"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.ArrivePlace}}</span> <el-input v-else type="text" v-model="item.ArrivePlace"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.UseBusType}}</span> <el-select v-else v-model="item.UseBusType"> <el-option label="单程" value="单程"></el-option> <el-option label="往返" value="往返"></el-option> </el-select> </td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start" v-if="item.IsShow==0"> <el-button type="primary" icon="el-icon-edit" circle @click="commonUpdate(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('pub.saveBtn')" placement="top-start" v-if="item.IsShow==1"> <el-button type="primary" icon="iconfont icon-baocun" circle @click="commonSave(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" circle @click="delJieSong(index)"></el-button> </el-tooltip> </td> </tr> <tr> <td colspan="12" style="text-align:right;"> <input type="button" class="TC_NewAddBtn" @click="addJieSong()" value="+添加记录" /> </td> </tr> <tr> <td colspan="12" style="text-align:left;"> <div style="margin:20px 0 0 50px"> <el-form-item style="display:inline-block;" label="费用共计:" label-width="90px"> <el-input type="text" class="w180" @keyup.native="checkPrice(CtObj,'PickUpTotalPrice')" v-model="CtObj.PickUpTotalPrice"></el-input> {{getCurrencyStr()}} </el-form-item> </div> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-7" ref="anchor7"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-bianji"></i> </span> <h2> <em>代办签证</em> </h2> </div> <table class="singeRowTable TcNewTable" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <th width="60">{{$t('active.ad_xuhao')}}</th> <th>国家(个人签证)</th> <th>停留时间</th> <th>代办签证费用({{getCurrencyStr()}}/个)</th> <th>交付保证金({{getCurrencyStr()}}/个)</th> <th width="100">{{$t('hotel.table_operat')}}</th> </tr> <tr v-for="(item,index) in CtObj.ContractVisaList" :key="index"> <td>{{index+1}}</td> <td> <span v-if="item.IsShow==0">{{item.Country}}</span> <el-input v-else type="text" v-model="item.Country"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.StopTime}}</span> <el-input v-else type="text" v-model="item.StopTime"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.VisaPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'VisaPrice')" v-model="item.VisaPrice"> </el-input> </td> <td> <span v-if="item.IsShow==0">{{item.DepositPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'DepositPrice')" v-model="item.DepositPrice"></el-input> </td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start" v-if="item.IsShow==0"> <el-button type="primary" icon="el-icon-edit" circle @click="commonUpdate(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('pub.saveBtn')" placement="top-start" v-if="item.IsShow==1"> <el-button type="primary" icon="iconfont icon-baocun" circle @click="commonSave(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" circle @click="delVisaList(index)"></el-button> </el-tooltip> </td> </tr> <tr> <td colspan="12" style="text-align:right;"> <input type="button" class="TC_NewAddBtn" @click="addVisaList()" value="+添加记录" /> </td> </tr> <tr> <td colspan="12" style="text-align:left;"> <div style="margin:20px 0 0 50px"> <el-form-item style="display:inline-block;" label="合计金额:" label-width="90px"> <el-input type="text" class="w180" @keyup.native="checkPrice(CtObj,'VisaTotalPrice')" v-model="CtObj.VisaTotalPrice"></el-input> {{getCurrencyStr()}} </el-form-item> </div> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-8" ref="anchor8"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-bianji"></i> </span> <h2> <em>服务组合( 机票与酒店)</em> </h2> </div> <div style="margin:20px;">机票预订</div> <table class="singeRowTable TcNewTable" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <th width="60">{{$t('active.ad_xuhao')}}</th> <th>{{$t('salesModule.Time')}}</th> <th>{{$t('sm.chufadi')}}</th> <th>{{$t('system.query_dest')}}</th> <th>{{$t('system.query_flightNum')}}</th> <th>{{$t('Operation.Op_shipNum')}}</th> <th>机票金额({{getCurrencyStr()}}/张)</th> <th>机场建设费({{getCurrencyStr()}}/张)</th> <th width="100">{{$t('hotel.table_operat')}}</th> </tr> <tr v-for="(item,index) in CtObj.ContractTicketAndHotel.ContractTickets" :key="index"> <td>{{index+1}}</td> <td> <span v-if="item.IsShow==0">{{item.TicketTime}}</span> <el-date-picker v-else v-model="item.TicketTime" class="w150" type="date" value-format="yyyy-MM-dd" placeholder=''></el-date-picker> </td> <td> <span v-if="item.IsShow==0">{{item.StartPlace}}</span> <el-input v-else type="text" v-model="item.StartPlace"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.ArrivePlace}}</span> <el-input v-else type="text" v-model="item.ArrivePlace"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.FlightNum}}</span> <el-input v-else type="text" v-model="item.FlightNum"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.TicketSpace}}</span> <el-select v-else v-model="item.TicketSpace"> <el-option label="普通舱" value="普通舱"></el-option> <el-option label="公务舱" value="公务舱"></el-option> <el-option :label="$t('Airticket.Air_firstClass')" value="头等舱"></el-option> </el-select> </td> <td> <span v-if="item.IsShow==0">{{item.TicketPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'TicketPrice')" v-model="item.TicketPrice"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.AirportPirce}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'AirportPirce')" v-model="item.AirportPirce"></el-input> </td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start" v-if="item.IsShow==0"> <el-button type="primary" icon="el-icon-edit" circle @click="commonUpdate(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('pub.saveBtn')" placement="top-start" v-if="item.IsShow==1"> <el-button type="primary" icon="iconfont icon-baocun" circle @click="commonSave(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" circle @click="delZuheTicket(index)"></el-button> </el-tooltip> </td> </tr> <tr> <td colspan="12" style="text-align:right;"> <input type="button" class="TC_NewAddBtn" @click="addZuheTicket()" value="+添加记录" /> </td> </tr> </tbody> </table> <div style="margin:20px;">酒店预订</div> <table class="singeRowTable TcNewTable" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <th width="60">{{$t('active.ad_xuhao')}}</th> <th>{{$t('hotel.table_hotelname')}}</th> <th>{{$t('OrderList.rooms.normal')}}</th> <th>{{$t('objFill.danrenjian')}}</th> <th>{{$t('objFill.shanrenjian')}}</th> <th>{{$t('objFill.ruzhuriqi')}}</th> <th>离店日期</th> <th>成人费用</th> <th>儿童费用</th> <th width="100">{{$t('hotel.table_operat')}}</th> </tr> <tr v-for="(item,index) in CtObj.ContractTicketAndHotel.ContractHotels" :key="index"> <td>{{index+1}}</td> <td> <span v-if="item.IsShow==0">{{item.HotelName}}</span> <el-input v-else type="text" v-model="item.HotelName"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.DoubleRoom}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'DoubleRoom')" v-model="item.DoubleRoom"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.SingleRoom}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'SingleRoom')" v-model="item.SingleRoom"></el-input> </td> <td> <span v-if="item.IsShow==0">{{item.ThirdRoom}}</span> <el-input v-else type="text" @keyup.native="checkInteger(item,'ThirdRoom')" v-model="item.ThirdRoom"> </el-input> </td> <td> <span v-if="item.IsShow==0">{{item.CheckInDate}}</span> <el-date-picker v-else class="w150" v-model="item.CheckInDate" type="date" value-format="yyyy-MM-dd" placeholder=''></el-date-picker> </td> <td> <span v-if="item.IsShow==0">{{item.OutDate}}</span> <el-date-picker v-else class="w150" v-model="item.OutDate" type="date" value-format="yyyy-MM-dd" placeholder=''></el-date-picker> </td> <td> <span v-if="item.IsShow==0">{{item.AdultPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'AdultPrice')" v-model="item.AdultPrice"> </el-input> </td> <td> <span v-if="item.IsShow==0">{{item.ChildrenPrice}}</span> <el-input v-else type="text" @keyup.native="checkPrice(item,'ChildrenPrice')" v-model="item.ChildrenPrice"></el-input> </td> <td> <el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start" v-if="item.IsShow==0"> <el-button type="primary" icon="el-icon-edit" circle @click="commonUpdate(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('pub.saveBtn')" placement="top-start" v-if="item.IsShow==1"> <el-button type="primary" icon="iconfont icon-baocun" circle @click="commonSave(item)"></el-button> </el-tooltip> <el-tooltip class="item" effect="dark" :content="$t('system.table_delete')" placement="top-start"> <el-button type="danger" icon="el-icon-delete" circle @click="delZuheHotel(index)"></el-button> </el-tooltip> </td> </tr> <tr> <td colspan="12" style="text-align:right;"> <input type="button" class="TC_NewAddBtn" @click="addZuheHotel()" value="+添加记录" /> </td> </tr> <tr> <td colspan="12" style="text-align:left;"> <div style="margin:20px 0 0 50px"> <el-form-item style="display:inline-block;" label="合计金额:" label-width="90px"> <el-input type="text" class="w180" @keyup.native="checkPrice(CtObj,'TicketAndHotelTotalPrice')" v-model="CtObj.TicketAndHotelTotalPrice"></el-input> {{getCurrencyStr()}} </el-form-item> </div> </td> </tr> </tbody> </table> </div> <div class="block mtop15" id="anchor-9" ref="anchor9" style="border-bottom:0;"> <div class="blockTitle"> <span class="icon"> <i class="iconfont icon-bianji"></i> </span> <h2> <em>其他单项服务事宜</em> </h2> </div> <div> <div style="margin:20px 0 0 50px"> <el-form-item style="display:inline-block;" label="其他服务费用合计:" label-width="140px"> <el-input type="text" class="w180" @keyup.native="checkPrice(CtObj,'OtherConventionPrice')" v-model="CtObj.OtherConventionPrice"></el-input> {{getCurrencyStr()}} </el-form-item> </div> </div> <div> <el-form-item label-width="0"> <quill-editor v-model="CtObj.OtherConvention"></quill-editor> </el-form-item> </div> </div> </div> </el-form> </div> </template> <script> import moment from 'moment' export default { data() { return { //选中切换 cked: 1, //查询参数 msg: { TCID: 0, orderID: 0, guestId: 0 }, addMsg: { Country: 0, Province: 0, City: 0 }, //参数 CtObj: { CType: 1, //合同类型:(1-单项委托协议[平台版2018],2大陆境内旅游合同2014,3-全国版国内旅游一日游旅游合同示范文本[2015版]) Tourists_Name: "", Tourists_IDNum: "", Tourists_Addres: "", Tourists_Tel: "", Tourists_Email: "", Tourists_PostNum: "", Tourists_Fax: "", Tourists_EmergencyLinkMan: "", Tourists_EmergencyLinkTel: "", SignType: 1, //合同章类型 TravelAgency_Name: "(株)ピースインターナショナル", //旅行社名称 TravelAgency_LicenseNum: "L-SC-CJ00015", TravelAgency_DealMan: "", TravelAgency_IDNum: "", TravelAgency_Address: "", TravelAgency_Tel: "", TravelAgency_Fax: "", TravelAgency_PostNum: "", TravelAgency_Email: "", TravelAgency_Scope: "出境游/境内游", //旅行社经营范围 TravelAgency_SignAddress: "", Guide_Name: "", Guide_Num: "", Guide_Tel: "", C_TCNUM: "", //团号 C_ProductName: "", C_StartDate: "", //出发时间 C_EndDate: "", C_DayNum: "", C_NightNum: "", C_AdultNum: "", C_AdultPrice: "", //成人价格 C_ChildrenNum: "", C_ChildrenPrice: "", C_GuideServicePrice: "", C_TotalPrice: "", C_PayDate: "", C_PayType: 1, // 旅游费用支付方式(1-现金,2-支票,3-信用卡,4-其他,5-转账) C_PayTypeRemark: "", //转账填写转账账号和备注 C_InsuranceType: 1, // 旅游者保险购买方式(1-委托旅行社购买,2-自行购买,3-放弃购买) C_InsuranceName: "", C_LowNum: "", C_IsAgreeTravel: 1, // 是否同意旅行社委托(1-不同意,0同意) C_AgreeTravelName: "", // 是否同意旅行社名称 C_IsAgreeDelay: 1, /// 是否同意延期出团(1-不同意,0同意) C_IsAgreeCndorse: 1, /// 是否同意改签(1-不同意,0同意) C_IsAgreeRemove: 1, // 是否同意解除合同(1-不同意,0同意) C_IsAgreeSpellGroup: 1, // 是否同意拼团(1-不同意,0同意) C_SpellGroupName: "", // 拼团旅行社名称 C_SolveType: 2, // 争议解决方式 C_SolveRemark: "", // 争议解决方式备注 C_ContractTotal: "1", // 合同总分数 C_ContractPer: '1', // 各持几份 C_StartAddress: "", // 出发地点 C_ReturnAddress: "", //返回地点 C_TrafficType: 1, // 交通方式(1-合车游,2-包车游) C_BusCode: "", // 车牌号 C_DriverName: "", // 驾驶员姓名 C_IsHaveKongTiao: 1, // 是否有空调(0-有空调,1-无空调) C_BusType: 1, // 车辆类型(1-面包车,2-中巴车,3-大巴车) C_BreakfastAddress: "", // 早餐地点 C_BreakfastBasic: "", // 早餐标准 C_LunchAddress: "", // 午餐地点 C_LunchBasic: "", // 午餐标准 C_DinnerAddress: "", // 晚餐地点 C_DinnerBasic: "", // 晚餐标准 C_IncludeRemark: "", // 费用包含 C_NonIncludeRemark: "", // 费用不包含 TravelAgency_ServiceTel: "", // 旅行社客服电话 C_ComplaintProvince: "", // 投诉省 C_ComplaintCity: "", // 投诉市 C_ComplaintTel: "", // 投诉电话 C_ComplaintEmail: "", // 投诉电子邮箱 C_ComplaintAddress: "", // 投诉地址 C_ComplaintPostNum: "", // 投诉邮编 C_ZhiFaTel: "", // 执法机构电话 C_XFZXHTSTel: "", // 消费者协会投诉电话 C_TicketDayNum: "0", // 几日内出票 C_OrderDayNum: "0", // 几日内下单 C_PayDayNum: "0", // 几日内缴费 C_SignType: "", // 获取签证资料及领取签证方式 OtherConventionPrice: "", // 其他服务费用合计 OtherConvention: "", // 其他约定事项 TripJson: "", GuestJson: '', // 游客信息【json】 ShopJson: '', // 购物信息【json】 SelfFeeJson: '', // 自费信息【Json】 TicketJson: '', // 机票信息 TicketTotalNum: 0, // 机票总数量 TicketOutDayNum: 0, // 机票几日内出票 TicketTotalDepositPrice: 0, // 机票预订总费用 HotelBookJson: "", // 酒店预订 HotelTotal: "", // 酒店多少间、晚 HotelCheckInType: "", // 酒店入住方式 HotelNotice: "", // 下订单后通知旅游者的方式 HotelTotalPrice: "0", // 酒店费用总计 PickUpJson: "", // 接送信息 PickUpTotalPrice: "0", // 接送总费用 VisaJson: "", // 签证信息 VisaTotalPrice: "0", // 签证总费用 TicketAndHotelJson: "", // 机票与酒店信息 TicketAndHotelTotalPrice: "0", // 机票加酒店组合总费用 ContractShopList: [], //自愿购物活动补充协议 ContractGuestList: [], //旅客名单 ContractTripList: [], //行程列表 ContractSelfFeeList: [], //自愿付费项目补充协议 ContractTicketList: [], //机票预订 ContractHotelList: [], //酒店预订列表 ContractPickUpList: [], //接送服务列表 ContractVisaList: [], //代办签证列表 ContractTicketAndHotel: { // 机票和酒店组合信息 ContractTickets: [], ContractHotels: [] }, TCID: 0, OrderId: 0, }, rules: { Tourists_Name: [{ required: true, message: this.$t('rule.EnterCusNameC'), trigger: "blur" }], Tourists_Tel: [{ required: true, message: this.$t('rule.EnterPNum'), trigger: "blur" }], Tourists_EmergencyLinkMan: [{ required: true, message: "请输入紧急联系人姓名", trigger: "blur" }], Tourists_EmergencyLinkTel: [{ required: true, message: "请输入紧急联系人电话", trigger: "blur" }], TravelAgency_DealMan: [{ required: true, message: this.$t('objFill.qingsrjbren'), trigger: "blur" }], C_TotalPrice: [{ required: true, message: "请输入费用总额", trigger: "blur" }] }, //菜单列表 menuArr: ['合同基本信息', '相关告知及提示', '费用计算', '游客信息', '机票预订', '酒店预订', '接送服务', '代办签证', '服务组合(机票与酒店)', '其他单项服务事宜'], ckedIndex: 0, ckedAll: false, //旅客信息 touristList: [], editorOption: { modules: { toolbar: [ ['bold', 'italic', 'underline', 'strike'], // toggled buttons ['blockquote', 'code-block', 'align'] ] } }, //防止重复提交 isSubmit: true, //大写金额 AmountMoney: '' }; }, filters: { YMD(date) { return moment(date).format("YYYY-MM-DD HH:mm"); } }, methods: { getCurrencyStr() { var str = "元"; if (this.CtObj.SignType == 1) { str = "円" } return str; }, changeSignType() { if (this.CtObj.SignType == 0) { this.CtObj.TravelAgency_Name = "四川和平国际旅行社有限公司"; this.CtObj.TravelAgency_Address = "成都市锦江区青和里南段55号1栋2310、2311、2312号 " } else { this.CtObj.TravelAgency_Name = "(株)ピースインターナショナル"; this.CtObj.TravelAgency_Address = ""; } }, //跳转锚点 goAnchor(selector) { var anchor = this.$el.querySelector(selector) document.documentElement.scrollTop = anchor.offsetTop - 70 }, //提交数据 SaveMsg() { if (this.isSubmit) { this.isSubmit = false; this.apipost( "travelcontract_post_SetTravelContractService", this.CtObj, res => { this.isSubmit = true; if (res.data.resultCode == 1) { this.Success(res.data.message); this.CtObj.ID = res.data.data; this.$router.push({ name: 'SingleContract', query: { id: res.data.data, } }); } else { this.Error(res.data.message); } }, err => {} ); } }, //跳转至预览 goUrl() { this.$router.push({ name: 'TravelContractDetail', query: { TCID: this.$route.query.TCID, guestId: this.CtObj.guestId, orderID: this.$route.query.orderID, blank: "y", } }); }, //提交 submitForm(addMsg) { //提交创建、修改表单 this.$refs[addMsg].validate(valid => { if (valid) { this.SaveMsg(); } else { this.Error(this.$t('objFill.qingwcbtxian')); return false; } }); }, //添加游客信息 addTourist() { this.CtObj.ContractGuestList.forEach((x, index) => { x.IsShow = 0; }); let obj = { CGuestName: "", CGuestSex: "男", CGuestCertificateType: "身份证", CGuestCertificateNum: "", CGuestTel: "", CGuestHealth: "健康", IsShow: 1 }; this.CtObj.ContractGuestList.push(obj); }, //删除游客 delTouristArr(index) { this.CtObj.ContractGuestList.splice(index, 1); }, //添加机票 addTickets() { this.CtObj.ContractTicketList.forEach((x, index) => { x.IsShow = 0; }); let obj = { TicketTime: "", // 时间 StartPlace: "", // 出发地 ArrivePlace: '', // 目的地 FlightNum: '', // 航班号 TicketPrice: '', // 机票金额 AirportPirce: '', // 机场建设费 DepositPrice: '', // 定金 IsShow: 1 }; this.CtObj.ContractTicketList.push(obj); }, //删除机票 delTicket(index) { this.CtObj.ContractTicketList.splice(index, 1); }, //添加酒店 addHotelList() { this.CtObj.ContractHotelList.forEach((x, index) => { x.IsShow = 0; }); let obj = { HotelName: "", // 酒店名称 DoubleRoom: '', //标准间 SingleRoom: '', //单间 ThirdRoom: '', //三人间 AdultNum: '', //成人人数 AdultPrice: '', //成人费用 ChildrenNum: '', //儿童人数 ChildrenPrice: '', //儿童费用 RoomPrice: '', //房费/晚 DepositPrice: '', // 定金/晚 CheckInDate: '', //入住日期 OutDate: '', //离店日期 IsShow: 1 }; this.CtObj.ContractHotelList.push(obj); }, //删除酒店 delHotelList(index) { this.CtObj.ContractHotelList.splice(index, 1); }, //添加接送服务 addJieSong() { this.CtObj.ContractPickUpList.forEach((x, index) => { x.IsShow = 0; }); let obj = { UseTime: '', //用车日期 UseNum: '', //用车人数 StartPlace: '', //出发地 ArrivePlace: '', //目的地 UseBusType: '单程', IsShow: 1 }; this.CtObj.ContractPickUpList.push(obj); }, //删除接送服务 delJieSong(index) { this.CtObj.ContractPickUpList.splice(index, 1); }, //添加代办签证 addVisaList() { this.CtObj.ContractVisaList.forEach((x, index) => { x.IsShow = 0; }); let obj = { Country: '', //国家 StopTime: '', //停留时间 VisaPrice: '', //代办签证费用(元/个) DepositPrice: '', // 保证金(元/个) IsShow: 1 }; this.CtObj.ContractVisaList.push(obj); }, //删除代办签证 delVisaList(index) { this.CtObj.ContractVisaList.splice(index, 1); }, //添加机票加酒店服务组合的机票 addZuheTicket() { this.CtObj.ContractTicketAndHotel.ContractTickets.forEach((x, index) => { x.IsShow = 0; }); let obj = { TicketTime: "", // 时间 StartPlace: "", // 出发地 ArrivePlace: '', // 目的地 FlightNum: '', // 航班号 TicketSpace: '普通舱', // 舱位 TicketPrice: '', // 机票金额 AirportPirce: '', // 机场建设费 IsShow: 1 }; this.CtObj.ContractTicketAndHotel.ContractTickets.push(obj); }, //删除机票加酒店服务组合的机票 delZuheTicket(index) { this.CtObj.ContractTicketAndHotel.ContractTickets.splice(index, 1); }, //添加机票加酒店服务组合的机票 addZuheHotel() { this.CtObj.ContractTicketAndHotel.ContractHotels.forEach((x, index) => { x.IsShow = 0; }); let obj = { HotelName: "", // 酒店名称 DoubleRoom: '', //标准间 SingleRoom: '', //单间 ThirdRoom: '', //三人间 CheckInDate: '', //入住日期 OutDate: '', //离店日期 AdultPrice: '', //成人费用 ChildrenPrice: '', //儿童费用 IsShow: 1 }; this.CtObj.ContractTicketAndHotel.ContractHotels.push(obj); }, //删除机票加酒店服务组合的机票 delZuheHotel(index) { this.CtObj.ContractTicketAndHotel.ContractHotels.splice(index, 1); }, //滚动条滚动选中tab menu() { var _self = this; _self.scroll = (document.documentElement.scrollTop || document.body.scrollTop) + 70; //滑动到指定位置相应菜单高亮 var a_0 = this.$refs.anchor0.offsetTop; var a_1 = this.$refs.anchor1.offsetTop; var a_2 = this.$refs.anchor2.offsetTop; var a_3 = this.$refs.anchor3.offsetTop; var a_4 = this.$refs.anchor4.offsetTop; var a_5 = this.$refs.anchor5.offsetTop; var a_6 = this.$refs.anchor6.offsetTop; var a_7 = this.$refs.anchor7.offsetTop; var a_8 = this.$refs.anchor7.offsetTop; var a_9 = this.$refs.anchor7.offsetTop; if (_self.scroll < a_0) { this.ckedIndex = 0 } else if (_self.scroll > a_0 && _self.scroll < a_1) { this.ckedIndex = 1 } else if (_self.scroll > a_2 && _self.scroll < a_3) { this.ckedIndex = 2 } else if (_self.scroll > a_3 && _self.scroll < a_4) { this.ckedIndex = 3 } else if (_self.scroll > a_4 && _self.scroll < a_5) { this.ckedIndex = 4 } else if (_self.scroll > a_5 && _self.scroll < a_6) { this.ckedIndex = 5 } else if (_self.scroll > a_6 && _self.scroll < a_7) { this.ckedIndex = 6 } else if (_self.scroll > a_7 && _self.scroll < a_8) { this.ckedIndex = 7 } else if (_self.scroll > a_8 && _self.scroll < a_9) { this.ckedIndex = 8 } }, GetData() { this.apipost( "travelcontract_get_GetTravelContractService", { ID: this.CtObj.ID }, res => { if (res.data.resultCode == 1) { var tempObj = res.data.data; this.CtObj.ID = tempObj.ID; this.CtObj.CType = tempObj.CType; this.CtObj.T_ContractNum = tempObj.T_ContractNum; this.CtObj.Tourists_Name = tempObj.Tourists_Name; this.CtObj.Tourists_IDNum = tempObj.Tourists_IDNum; this.CtObj.Tourists_Addres = tempObj.Tourists_Addres; this.CtObj.Tourists_Tel = tempObj.Tourists_Tel; this.CtObj.Tourists_Email = tempObj.Tourists_Email; this.CtObj.Tourists_PostNum = tempObj.Tourists_PostNum; this.CtObj.Tourists_Fax = tempObj.Tourists_Fax; this.CtObj.Tourists_EmergencyLinkMan = tempObj.Tourists_EmergencyLinkMan; this.CtObj.Tourists_EmergencyLinkTel = tempObj.Tourists_EmergencyLinkTel; this.CtObj.TravelAgency_DealMan = tempObj.TravelAgency_DealMan; this.CtObj.TravelAgency_IDNum = tempObj.TravelAgency_IDNum; this.CtObj.TravelAgency_Tel = tempObj.TravelAgency_Tel; this.CtObj.TravelAgency_Fax = tempObj.TravelAgency_Fax; this.CtObj.TravelAgency_PostNum = tempObj.TravelAgency_PostNum; this.CtObj.TravelAgency_Email = tempObj.TravelAgency_Email; this.CtObj.TravelAgency_SignAddress = tempObj.TravelAgency_SignAddress; this.CtObj.Guide_Name = tempObj.Guide_Name; this.CtObj.Guide_Num = tempObj.Guide_Num; this.CtObj.Guide_Tel = tempObj.Guide_Tel; this.CtObj.C_TCNUM = tempObj.C_TCNUM; this.CtObj.C_ProductName = tempObj.C_ProductName; this.CtObj.C_StartDate = tempObj.C_StartDate; this.CtObj.C_EndDate = tempObj.C_EndDate; this.CtObj.C_DayNum = tempObj.C_DayNum; this.CtObj.C_NightNum = tempObj.C_NightNum; this.CtObj.C_AdultNum = tempObj.C_AdultNum; this.CtObj.C_AdultPrice = tempObj.C_AdultPrice; this.CtObj.C_ChildrenNum = tempObj.C_ChildrenNum; this.CtObj.C_ChildrenPrice = tempObj.C_ChildrenPrice; this.CtObj.C_GuideServicePrice = tempObj.C_GuideServicePrice; this.CtObj.C_TotalPrice = tempObj.C_TotalPrice; this.CtObj.C_PayDate = tempObj.C_PayDate; this.CtObj.C_PayType = tempObj.C_PayType; this.CtObj.C_PayTypeRemark = tempObj.C_PayTypeRemark; this.CtObj.C_InsuranceType = tempObj.C_InsuranceType; this.CtObj.C_InsuranceName = tempObj.C_InsuranceName; this.CtObj.C_LowNum = tempObj.C_LowNum; this.CtObj.C_IsAgreeTravel = tempObj.C_IsAgreeTravel; this.CtObj.C_AgreeTravelName = tempObj.C_AgreeTravelName; this.CtObj.C_IsAgreeDelay = tempObj.C_IsAgreeDelay; this.CtObj.C_IsAgreeCndorse = tempObj.C_IsAgreeCndorse; this.CtObj.C_IsAgreeRemove = tempObj.C_IsAgreeRemove; this.CtObj.C_IsAgreeSpellGroup = tempObj.C_IsAgreeSpellGroup; this.CtObj.C_SpellGroupName = tempObj.C_SpellGroupName; this.CtObj.C_SolveType = tempObj.C_SolveType; this.CtObj.C_SolveRemark = tempObj.C_SolveRemark; this.CtObj.C_ContractTotal = tempObj.C_ContractTotal; this.CtObj.C_ContractPer = tempObj.C_ContractPer; this.CtObj.C_StartAddress = tempObj.C_StartAddress; this.CtObj.C_ReturnAddress = tempObj.C_ReturnAddress; this.CtObj.C_TrafficType = tempObj.C_TrafficType; this.CtObj.C_BusCode = tempObj.C_BusCode; this.CtObj.C_DriverName = tempObj.C_DriverName; this.CtObj.C_IsHaveKongTiao = tempObj.C_IsHaveKongTiao; this.CtObj.C_BusType = tempObj.C_BusType; this.CtObj.C_BreakfastAddress = tempObj.C_BreakfastAddress; this.CtObj.C_BreakfastBasic = tempObj.C_BreakfastBasic; this.CtObj.C_LunchAddress = tempObj.C_LunchAddress; this.CtObj.C_LunchBasic = tempObj.C_LunchBasic; this.CtObj.C_DinnerAddress = tempObj.C_DinnerAddress; this.CtObj.C_DinnerBasic = tempObj.C_DinnerBasic; this.CtObj.C_IncludeRemark = tempObj.C_IncludeRemark; this.CtObj.C_IncludeFee = tempObj.C_IncludeFee; this.CtObj.C_NonIncludeRemark = tempObj.C_NonIncludeRemark; this.CtObj.TravelAgency_ServiceTel = tempObj.TravelAgency_ServiceTel; this.CtObj.C_ComplaintProvince = tempObj.C_ComplaintProvince; this.CtObj.C_ComplaintCity = tempObj.C_ComplaintCity; this.CtObj.C_ComplaintTel = tempObj.C_ComplaintTel; this.CtObj.C_ComplaintEmail = tempObj.C_ComplaintEmail; this.CtObj.C_ComplaintAddress = tempObj.C_ComplaintAddress; this.CtObj.C_ComplaintPostNum = tempObj.C_ComplaintPostNum; this.CtObj.C_ZhiFaTel = tempObj.C_ZhiFaTel; this.CtObj.C_XFZXHTSTel = tempObj.C_XFZXHTSTel; this.CtObj.C_TicketDayNum = tempObj.C_TicketDayNum; this.CtObj.C_OrderDayNum = tempObj.C_OrderDayNum; this.CtObj.C_PayDayNum = tempObj.C_PayDayNum; this.CtObj.C_SignType = tempObj.C_SignType; this.CtObj.OtherConventionPrice = tempObj.OtherConventionPrice; this.CtObj.OtherConvention = tempObj.OtherConvention; this.CtObj.OtherConventionPrice = tempObj.OtherConventionPrice; this.CtObj.TicketTotalNum = tempObj.TicketTotalNum; this.CtObj.TicketOutDayNum = tempObj.TicketOutDayNum; this.CtObj.TicketTotalDepositPrice = tempObj.TicketTotalDepositPrice; this.CtObj.HotelTotal = tempObj.HotelTotal; this.CtObj.HotelCheckInType = tempObj.HotelCheckInType; this.CtObj.HotelNotice = tempObj.HotelNotice; this.CtObj.HotelTotalPrice = tempObj.HotelTotalPrice; this.CtObj.PickUpTotalPrice = tempObj.PickUpTotalPrice; this.CtObj.VisaTotalPrice = tempObj.VisaTotalPrice; this.CtObj.SignType = tempObj.SignType; this.CtObj.TravelAgency_Name = tempObj.TravelAgency_Name; this.CtObj.TravelAgency_Address = tempObj.TravelAgency_Address; this.CtObj.TicketAndHotelTotalPrice = tempObj.TicketAndHotelTotalPrice; if ( tempObj.ContractShopList && tempObj.ContractShopList != null && tempObj.ContractShopList.length > 0 ) { this.CtObj.ContractShopList = tempObj.ContractShopList; } else { this.CtObj.ContractShopList = []; } if ( this.CtObj.ContractShopList && this.CtObj.ContractShopList != null && this.CtObj.ContractShopList.length > 0 ) { this.CtObj.ContractShopList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractGuestList && tempObj.ContractGuestList != null && tempObj.ContractGuestList.length > 0 ) { this.CtObj.ContractGuestList = tempObj.ContractGuestList; } else { this.CtObj.ContractGuestList = []; } if ( this.CtObj.ContractGuestList && this.CtObj.ContractGuestList != null && this.CtObj.ContractGuestList.length > 0 ) { this.CtObj.ContractGuestList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractSelfFeeList && tempObj.ContractSelfFeeList != null && tempObj.ContractSelfFeeList.length > 0 ) { this.CtObj.ContractSelfFeeList = tempObj.ContractSelfFeeList; } else { this.CtObj.ContractSelfFeeList = []; } if ( this.CtObj.ContractSelfFeeList && this.CtObj.ContractSelfFeeList != null && this.CtObj.ContractSelfFeeList.length > 0 ) { this.CtObj.ContractSelfFeeList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractTripList && tempObj.ContractTripList != null && tempObj.ContractTripList.length > 0 ) { this.CtObj.ContractTripList = tempObj.ContractTripList; } else { this.CtObj.ContractTripList = []; } if ( this.CtObj.ContractTripList && this.CtObj.ContractTripList != null && this.CtObj.ContractTripList.length > 0 ) { this.CtObj.ContractTripList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractTicketList && tempObj.ContractTicketList != null && tempObj.ContractTicketList.length > 0 ) { this.CtObj.ContractTicketList = tempObj.ContractTicketList; } else { this.CtObj.ContractTicketList = []; } if ( this.CtObj.ContractTicketList && this.CtObj.ContractTicketList != null && this.CtObj.ContractTicketList.length > 0 ) { this.CtObj.ContractTicketList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractHotelList && tempObj.ContractHotelList != null && tempObj.ContractHotelList.length > 0 ) { this.CtObj.ContractHotelList = tempObj.ContractHotelList; } else { this.CtObj.ContractHotelList = []; } if ( this.CtObj.ContractHotelList && this.CtObj.ContractHotelList != null && this.CtObj.ContractHotelList.length > 0 ) { this.CtObj.ContractHotelList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractPickUpList && tempObj.ContractPickUpList != null && tempObj.ContractPickUpList.length > 0 ) { this.CtObj.ContractPickUpList = tempObj.ContractPickUpList; } else { this.CtObj.ContractPickUpList = []; } if ( this.CtObj.ContractPickUpList && this.CtObj.ContractPickUpList != null && this.CtObj.ContractPickUpList.length > 0 ) { this.CtObj.ContractPickUpList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractVisaList && tempObj.ContractVisaList != null && tempObj.ContractVisaList.length > 0 ) { this.CtObj.ContractVisaList = tempObj.ContractVisaList; } else { this.CtObj.ContractVisaList = []; } if ( this.CtObj.ContractVisaList && this.CtObj.ContractVisaList != null && this.CtObj.ContractVisaList.length > 0 ) { this.CtObj.ContractVisaList.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractTicketAndHotel.ContractTickets && tempObj.ContractTicketAndHotel.ContractTickets != null && tempObj.ContractTicketAndHotel.ContractTickets.length > 0 ) { this.CtObj.ContractTicketAndHotel.ContractTickets = tempObj.ContractTicketAndHotel.ContractTickets; } else { this.CtObj.ContractTicketAndHotel.ContractTickets = []; } if ( this.CtObj.ContractTicketAndHotel.ContractTickets && this.CtObj.ContractTicketAndHotel.ContractTickets != null && this.CtObj.ContractTicketAndHotel.ContractTickets.length > 0 ) { this.CtObj.ContractTicketAndHotel.ContractTickets.forEach(gItem => { gItem.IsShow = 0; }); } if ( tempObj.ContractTicketAndHotel.ContractHotels && tempObj.ContractTicketAndHotel.ContractHotels != null && tempObj.ContractTicketAndHotel.ContractHotels.length > 0 ) { this.CtObj.ContractTicketAndHotel.ContractHotels = tempObj.ContractTicketAndHotel.ContractHotels; } else { this.CtObj.ContractTicketAndHotel.ContractHotels = []; } if ( this.CtObj.ContractTicketAndHotel.ContractHotels && this.CtObj.ContractTicketAndHotel.ContractHotels != null && this.CtObj.ContractTicketAndHotel.ContractHotels.length > 0 ) { this.CtObj.ContractTicketAndHotel.ContractHotels.forEach(gItem => { gItem.IsShow = 0; }); } if (this.CtObj.C_TotalPrice && this.CtObj.ContractTicketAndHotel.ContractHotels != null) { this.number_chinese(this.CtObj.C_TotalPrice); } } else { this.Error(res.data.message); } }, err => {} ); }, //公用休改 commonUpdate(item) { item.IsShow = 1; this.$forceUpdate(); }, //公用保存 commonSave(item) { item.IsShow = 0; this.$forceUpdate(); }, //小写金额转大写 number_chinese(str) { var num = parseFloat(str); var strOutput = ""; var strUnit = '仟佰拾亿仟佰拾万仟佰拾元角分'; if (this.CtObj.SignType == 1) { strUnit = '仟佰拾亿仟佰拾万仟佰拾円角分'; } num += "00"; var intPos = num.indexOf('.'); if (intPos >= 0) { num = num.substring(0, intPos) + num.substr(intPos + 1, 2); } strUnit = strUnit.substr(strUnit.length - num.length); for (var i = 0; i < num.length; i++) { strOutput += '零壹贰叁肆伍陆柒捌玖'.substr(num.substr(i, 1), 1) + strUnit.substr(i, 1); } if (this.CtObj.SignType == 0) { this.AmountMoney = strOutput.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace( /零([亿|万])/g, '$1').replace(/零+元/, '元').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零元") } else { this.AmountMoney = strOutput.replace(/零角零分$/, '整').replace(/零[仟佰拾]/g, '零').replace(/零{2,}/g, '零').replace( /零([亿|万])/g, '$1').replace(/零+元/, '円').replace(/亿零{0,3}万/, '亿').replace(/^元/, "零円") } } }, created() { if (this.$route.query.TCID && this.$route.query.TCID > 0) { this.CtObj.TCID = this.$route.query.TCID; } if (this.$route.query.orderID && this.$route.query.orderID > 0) { this.CtObj.OrderId = this.$route.query.orderID; } }, mounted() { if (this.$route.query.id && this.$route.query.id > 0) { this.CtObj.ID = this.$route.query.id; this.GetData(); } this.$nextTick(function () { //滚动监听事件 window.addEventListener('scroll', this.menu) }); } }; </script>